vol*_*olk 5 c# floating-point precision floating-accuracy
在许多编程语言中,像 0.1 + 0.2 这样的运算并不等于 0.3,而是 0.30000000000000004。因此,像 0.1+0.2 == 0.3 这样的检查将返回 false。
就我而言,这是由于 IEE 754 标准,这就是它在许多语言中很常见的原因。
在 C# 中也可以找到相同的行为。我使用下一个代码片段来测试它:
static void Main(string[] args)
{
double x = 0.2;
double y = 0.1;
double res = 0.3;
double z = x + y;
Console.WriteLine("bool result = {0}", z == res); // outputs false
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
但如果我使用相同的代码但使用浮点变量,一切都会以其他方式工作:
static void Main(string[] args)
{
float x = 0.2f;
float y = 0.1f;
float res = 0.3f;
float z = x + y;
Console.WriteLine("bool result = {0}", z == res); // outputs true
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
谁能给我解释一下吗?
| 归档时间: |
|
| 查看次数: |
1981 次 |
| 最近记录: |