带有双精度数的 C# 问题
本文关键字:问题 双精度 | 更新日期: 2023-09-27 18:30:17
我在 C# 中使用双数时遇到了一个奇怪的问题。NET这是我的测试:
double my_value = 0.49;
问题是显示的变量值是 0.4899999999999999999 我不需要使用Math.Round()
函数显示 0.49;我需要准确存储此值。
谢谢。
欢迎使用浮点精度。如果需要更高的精度,请使用decimal
类型。
decimal my_value = 0.49m;
如果你想了解更多关于为什么会这样,我建议你阅读这篇文章 - 每个计算机科学家都应该知道的关于浮点运算的知识
改用decimal
,double
是浮动二进制点类型。
decimal my_value = 0.49m;
有用的链接;
- 浮点表示和精度
- 每个计算机科学家都应该知道的关于浮点运算的知识
当需要使用精确值时,不要使用 double
类型。那是decimal
类型的域
decimal my_value = 0.49m;