Почему этот код печатает 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: Этот код появился из unit test, а не для кода выпуска.
PPS: unit test проходил в .NET 3.5, но теперь он не работает после обновления до .NET 4.