0.1 + 0.2 的不同答案

问题描述 投票:0回答:1

我知道计算机中有一个数学问题会导致意外的输出:

using static System.Console;
var a = .1;
var b = .2;
WriteLine(a + b);
// output: 0.30000000000000004

但是当我在其他一些电脑(例如 w3schools 在线 C# 编译器)中运行此代码时,我得到了

.3
作为答案,这对我来说似乎很奇怪。 为什么会发生这样的事?

c# floating-point decimal
1个回答
0
投票

由于计算机中浮点数的表示和处理方式,此结果可能看起来出乎意料。

浮点数以二进制形式表示,并不是所有的十进制数都可以用二进制精确表示。在对浮点数执行算术运算时,这可能会导致较小的舍入误差。

将 a 和 b 加在一起时,由于浮点运算固有的不精确性,结果并不精确为 0.3。相反,它是一个非常接近的近似值。

© www.soinside.com 2019 - 2024. All rights reserved.