我总是在C#中告诉您double类型的变量不适合钱。所有奇怪的事情都可能发生。但是我似乎无法创建一个示例来演示其中的一些问题。谁能提供这样的例子?(编辑;该帖子最初被标记为C#;一些回复涉及的具体细节decimal,因此意味着System.Decimal)。(编辑2:我是专门要求一些C#代码的,所以我不认为这仅与语言无关)
3 回答
慕森王
TA贡献1777条经验 获得超3个赞
非常非常不合适。使用十进制。
double x = 3.65, y = 0.05, z = 3.7;
Console.WriteLine((x + y) == z); // false
(例如,从Jon的页面在这里 -推荐阅读;-p)
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
舍入会有效地导致奇数错误。此外,与精确值进行比较非常棘手-您通常需要应用某种epsilon来检查“接近”特定值的实际值。
这是一个具体的例子:
using System;
class Test
{
static void Main()
{
double x = 0.1;
double y = x + x + x;
Console.WriteLine(y == 0.3); // Prints False
}
}
- 3 回答
- 0 关注
- 254 浏览
添加回答
举报
0/150
提交
取消