Double与Decimal的区别如下:
class Program
{
static void Main(string[] args)
{
double a = 0.3 - 0.2;
double b = 0.2 - 0.1;
Console.WriteLine(a == b); // False
Console.WriteLine(a == 0.1); // False
Console.WriteLine(b == 0.1); // True
decimal x = 0.3m - 0.2m;
decimal y = 0.2m - 0.1m;
Console.WriteLine(x == y); // True
Console.WriteLine(x == 0.1m); // True
Console.WriteLine(y == 0.1m); // True
Console.ReadLine();
}
}
事实上,大多数现代语言都会有浮点数无法精确表示的问题(包括Javascript),因为他们都采用了IEEE-754浮点数表示法。
一个查看真实IEEE-754表示的浮点数的网站:
https://baseconvert.com/ieee-754-floating-point
Javascript浮点数: