在C#中将双倍乘以100会导致出乎意料的答案

use*_*893 1 c# math floating-point multiplication

可能重复:
C#Maths给出了错误的结果!

我在C#windows应用程序项目中有以下代码:

双重测试= 2.24*100;

如果我添加一个手表进行测试,可以预期值为224,但实际上是:224.00000000000003

任何人都可以解释额外的.00000000000003来自哪里?

Mar*_*ell 15

在C#中将小数乘以100会导致意外的答案

首先,您没有乘以小数 - 您将IEEE 754浮点数乘以100.

因为2.24不存在double.但是,如果你这样做:

decimal test = 2.24M * 100;
Run Code Online (Sandbox Code Playgroud)

它会表现得像你期望的那样.