c# - 减去 double 时的奇怪结果

标签 c# double

<分区>

Possible Duplicate:
Why is floating point arithmetic in C# imprecise?

我一直在处理一些数字和 C#,下面这行代码产生的数字与人们预期的不同:

double num = (3600.2 - 3600.0);

我原以为 num 是 0.2,结果却是 0.1999999999998181。它产生一个接近但仍然不同的小数点有什么原因吗?

最佳答案

这是因为double 是 float 据类型。

如果您想要更高的准确性,您可以改为使用 decimal

decimal 的文字后缀是 m,因此要使用 decimal 算术(并产生 decimal 结果),您可以将代码编写为

var num = (3600.2m - 3600.0m);

请注意,使用 decimal 有一些缺点。它是 128 位数据类型,而不是 64 位数据类型,64 位是 double 的大小。这使得它在内存和处理方面都更加昂贵。它的范围也比 double 小得多。

关于c# - 减去 double 时的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2211378/

相关文章:

java - java中的四舍五入 double

java - 不同的舍入方法似乎不起作用

c# - 通过 Web Api 中的请求支持 Protobuf-net

javascript - 如何在主页中保存模态弹出窗口值

c# - 在 Visual Studio 解决方案中重新链接 Xaml 和代码隐藏

c、printf、 double : getting more than 15 decimal digits

c++ - 在Visual Studio中将64位 double 转换为字节数组形式的80位 double

Android 多点触控和双击协同工作以实现 ImageView

c# - 不支持写入压缩流。使用 System.IO.GZipStream

c# - 如何将按钮放在 WebView 之上