带有双精度数的 C# 问题

本文关键字:问题 双精度 | 更新日期: 2023-09-27 18:30:17

我在 C# 中使用双数时遇到了一个奇怪的问题。NET这是我的测试:

double my_value = 0.49;
问题是显示的变量值是 0.4899999999999999999

我不需要使用Math.Round()函数显示 0.49;我需要准确存储此值。

谢谢。

带有双精度数的 C# 问题

欢迎使用浮点精度。如果需要更高的精度,请使用decimal类型。

decimal my_value = 0.49m;

如果你想了解更多关于为什么会这样,我建议你阅读这篇文章 - 每个计算机科学家都应该知道的关于浮点运算的知识

改用decimaldouble浮动二进制点类型

decimal my_value = 0.49m;

有用的链接;

  • 浮点表示和精度
  • 每个计算机科学家都应该知道的关于浮点运算的知识

当需要使用精确值时,不要使用 double 类型。那是decimal类型的域

decimal my_value = 0.49m;