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.8

A
double
只有15-16位精度-编译器会将您的文字翻译为最接近的值,该值可由
double
表示,即本例为
19768.8
a
double
仅具有15-16位精度-编译器会将您的文字翻译为最接近的值,该值可由
double
表示,即本例
19768.8

A
double
只有15-16位精度-编译器会将您的文本转换为可由
double
表示的最接近的值,这种情况下,
19768.8

已经讨论过很多次了;浮点不是完美的,你需要和delta比较。我从来没有声称自己是计算机科学家。已经讨论过很多次了;浮点不是完美的,你需要和delta比较。我从来没有声称自己是计算机科学家。已经讨论过很多次了;浮点不是完美的,你需要和delta比较。我从来没有声称自己是计算机科学家。已经讨论过很多次了;浮点不是完美的,你需要与delta进行比较。我从未声称自己是计算机科学家。另外一条经验法则是,永远不要将
=
与浮点类型一起使用,以免陷入同一问题。另外一条经验法则是永远不要将
=
与浮点类型一起使用,以免陷入同一问题。还有另一条经验法则是,永远不要将
==
与浮点类型一起使用,以免陷入同一问题。另一条经验法则是永远不要将
==
与浮点类型一起使用,以免陷入同一问题。