Я пишу код в C++ и определил PI как:с плавающей точкой округления
const double MathConstants::PI = atan(1.0)*4.0;
Else, где в моем коде я установил переменный с плавающей точкой:
float result = (float) (-MathConstants::PI/2.0);
При печати значения я получаю DB 0F C9 BF немного endian. Преобразован в большой endian, который является BF C9 0F DB.
Согласно http://babbage.cs.qc.cuny.edu/IEEE-754.old/Decimal.html, что эквивалентно -1.5707964.
Я не понимаю, почему я получаю -1.5707964 вместо -1.5707963. -1.5707963 - результат, которого я ожидаю, поскольку -PI/2 - -1.5707963267948966.
Может кто-нибудь просветить меня здесь?
Не забывайте, что с плавающей запятой обычно находится в двоичной форме ... не десятичной. – Mysticial
Сколько раз мы должны переходить через неотъемлемую погрешность значений с плавающей запятой? Кажется, это обсуждалось со смертью в StackOverflow. – dreamlax
@dreamlax, если у людей есть 10 пальцев, мы продолжим получать эти вопросы. По крайней мере, это немного отличается от большинства других. –