【发布时间】:2019-06-01 14:15:45
【问题描述】:
当我使用 Visual Studio 调试程序时;
当我通过使用将双变量“91.151497095188446”转换为浮点数时
(float)double_variable
我看到结果浮点变量是“91.1515”。
为什么我会丢失这么多精确度?我需要使用其他数据类型吗?
【问题讨论】:
-
嗯,是的,如果您想要超过 7 位有效数字的精度,则需要不同的数据类型。来自the documentation:“单个值具有最多 7 位十进制数字的精度,但内部最多保留 9 位数字。” (请注意,尽管您只看到 6 位数字,那是因为该值是 91.15150 到 7 位有效数字。)从根本上说,如果您不想失去精度,请不要使用精度较低的类型。
-
如果精度损失很关键(例如财务计算),您可以尝试使用 Decimal 类型
-
您为什么希望它不会丢失精度?你为什么要考虑使用
float- 为什么不继续使用double?
标签: c# floating-point