C#精度计算乘以int和double
考虑以下代码:C#精度计算乘以int和double,c#,.net,int,double,multiplication,C#,.net,Int,Double,Multiplication,考虑以下代码: Console.WriteLine((197688 * 0.1) == 19768.800000000003); // True Console.WriteLine((197688 * 0.1) == 19768.8); // False 计算不正确吗 Java-> 浮点类型(和计算)本质上是不精确的。它们是二进制的,而不是十进制的,因此计算会产生“意外”的十进制值 将其与此进行比较: Console.WriteLine((197688 * 0.1m) == 19768.800
Console.WriteLine((197688 * 0.1) == 19768.800000000003); // True
Console.WriteLine((197688 * 0.1) == 19768.8); // False
计算不正确吗
Java->
浮点类型(和计算)本质上是不精确的。它们是二进制的,而不是十进制的,因此计算会产生“意外”的十进制值
将其与此进行比较:
Console.WriteLine((197688 * 0.1m) == 19768.800000000003m); // False
Console.WriteLine((197688 * 0.1m) == 19768.8m); // True
结果与您预期的一样,因为使用了decimal
。顾名思义,它适合于十进制计算,因为它的内部表示形式
旁注:经验法则是绝不使用浮点类型进行货币计算。正是由于十进制值的精度问题。浮点类型(和计算)本质上是不精确的。它们是二进制的,而不是十进制的,因此计算会产生“意外”的十进制值
将其与此进行比较:
Console.WriteLine((197688 * 0.1m) == 19768.800000000003m); // False
Console.WriteLine((197688 * 0.1m) == 19768.8m); // True
结果与您预期的一样,因为使用了decimal
。顾名思义,它适合于十进制计算,因为它的内部表示形式
旁注:经验法则是绝不使用浮点类型进行货币计算。正是由于十进制值的精度问题。浮点类型(和计算)本质上是不精确的。它们是二进制的,而不是十进制的,因此计算会产生“意外”的十进制值
将其与此进行比较:
Console.WriteLine((197688 * 0.1m) == 19768.800000000003m); // False
Console.WriteLine((197688 * 0.1m) == 19768.8m); // True
结果与您预期的一样,因为使用了decimal
。顾名思义,它适合于十进制计算,因为它的内部表示形式
旁注:经验法则是绝不使用浮点类型进行货币计算。正是由于十进制值的精度问题。浮点类型(和计算)本质上是不精确的。它们是二进制的,而不是十进制的,因此计算会产生“意外”的十进制值
将其与此进行比较:
Console.WriteLine((197688 * 0.1m) == 19768.800000000003m); // False
Console.WriteLine((197688 * 0.1m) == 19768.8m); // True
结果与您预期的一样,因为使用了decimal
。顾名思义,它适合于十进制计算,因为它的内部表示形式
旁注:经验法则是绝不使用浮点类型进行货币计算。正是由于精度问题与十进制值有关。A
double
只有15-16位精度-编译器会将您的文本转换为最接近的值,该值可以由double
表示,即本例为19768.8Adouble
只有15-16位精度-编译器会将您的文字翻译为最接近的值,该值可由double
表示,即本例为19768.8
adouble
仅具有15-16位精度-编译器会将您的文字翻译为最接近的值,该值可由double
表示,即本例19768.8
Adouble
只有15-16位精度-编译器会将您的文本转换为可由double
表示的最接近的值,这种情况下,19768.8
已经讨论过很多次了;浮点不是完美的,你需要和delta比较。我从来没有声称自己是计算机科学家。已经讨论过很多次了;浮点不是完美的,你需要和delta比较。我从来没有声称自己是计算机科学家。已经讨论过很多次了;浮点不是完美的,你需要和delta比较。我从来没有声称自己是计算机科学家。已经讨论过很多次了;浮点不是完美的,你需要与delta进行比较。我从未声称自己是计算机科学家。另外一条经验法则是,永远不要将=
与浮点类型一起使用,以免陷入同一问题。另外一条经验法则是永远不要将=
与浮点类型一起使用,以免陷入同一问题。还有另一条经验法则是,永远不要将==
与浮点类型一起使用,以免陷入同一问题。另一条经验法则是永远不要将==
与浮点类型一起使用,以免陷入同一问题。