Поэтому этот модульный тест завершается неудачно:
Код: Выделить всё
float f = -99.9f;
double d = (double)f;
Assert.AreEqual(-99.9, d);
Код: Выделить всё
double d2 = -99.9;
Assert.AreEqual(-99.9, d2);
Assert.AreEqual(-99.9000000000000, d2);
РЕДАКТИРОВАТЬ
Я нашел обходной путь, который на данный момент, кажется, хорошо работает для моего конкретного приложения (то есть тот, где я заранее не знаю, до скольких цифр точности округлять число с плавающей запятой):
Код: Выделить всё
float f = -99.9f;
double d = double.Parse(f.ToString("r"));
Assert.AreEqual(-99.9, d);
EDIT 2
Согласно приведенному ниже ответу Лассе В. Карлсена, решением было использовать MSTest, эквивалентный методу AreEqual:
Код: Выделить всё
Assert.AreEqual(-99.9, d, 0.00001);