我有一行代码,它产生了两个不同的结果。
给定以下行:
我期望这个值始终四舍五入为4.2。当我从控制台应用程序运行此代码时,总是得到预期结果4.2。如果我将相同的代码放入单元测试并运行该测试,结果会变成4.1。如果该代码在Windows服务中运行,结果也会是4.1。
您有什么想法可以解释为什么会产生不同的值或如何使其始终表现一致?
在64位机器上使用Visual Studio 2013和.NET 4.5运行此代码。
给定以下行:
var rounded = Math.Round(415 * 0.01f, 1);
我期望这个值始终四舍五入为4.2。当我从控制台应用程序运行此代码时,总是得到预期结果4.2。如果我将相同的代码放入单元测试并运行该测试,结果会变成4.1。如果该代码在Windows服务中运行,结果也会是4.1。
您有什么想法可以解释为什么会产生不同的值或如何使其始终表现一致?
在64位机器上使用Visual Studio 2013和.NET 4.5运行此代码。
4.1
。我认为问题在于你期望计算结果恰好是4.15
,但实际上它并不是。由于0.01f
并不完全等于0.01
而是等于0.00999999977648258
,所以结果是4.14999990724027
。如果你使用Math.Round(4.15, 1)
,你将得到4.2
。 - Guffa