为什么False在.NET 4中打印此代码?似乎是显式强制转换导致某些意外行为。
除了“浮点数不准确”或“不要那样做”之外,我想要一个答案。
float a(float x, float y)
{
return ( x * y );
}
float b(float x, float y)
{
return (float)( x * y );
}
void Main()
{
Console.WriteLine( a( 10f, 1f/10f ) == b( 10f, 1f/10f ) );
}
PS:此代码来自单元测试,而不是发布代码。该代码是故意以这种方式编写的。我怀疑它最终会失败,但是我想确切地知道何时以及为什么。答案证明了此技术的有效性,因为它提供了一种超出对浮点确定性的通常理解的理解。这就是以这种方式编写此代码的目的;刻意探索。
PPS:单元测试在.NET 3.5中通过,但是现在升级到.NET 4后失败。
慕田峪9158850
收到一只叮咚