Java
Код: Выделить всё
import java.lang.Math;
public class RoundExample{
public static void main(String[] args){
System.out.println(String.format("%10.8f",0.644696875));
}
}
попробуйте сами: http://tpcg .io/oszC0w
C
Код: Выделить всё
#include
int main()
{
printf("%10.8f", 0.644696875); //double to string
return 0;
}
попробуйте сами: http://tpcg .io/fQqSRF
Вопрос
Почему последняя цифра отличается?
Фон
Число 0,644696875 не может быть представлено точно как номер машины. Оно представлено в виде дроби 2903456606016923 / 4503599627370496, которая имеет значение 0,6446968749999999
Это, по общему признанию, крайний случай. Но мне действительно интересно узнать источник разницы.
Связано: https://mathematica.stackexchange.com/q ... rm-double- округление чисел
Подробнее здесь: https://stackoverflow.com/questions/577 ... ifferently
Мобильная версия