Всем известно правилльность следующих утверждений:
- int(1.13) == 1;
- 1.13 - 1 == 0.13;
- 0.13 * 100 == 13;
Почему же в программе:
constexpr double d = 1.13;
int t = (d - int(d)) * 100;
cout << t;
выводится 12 ?
Всем известно правилльность следующих утверждений:
Почему же в программе:
constexpr double d = 1.13;
int t = (d - int(d)) * 100;
cout << t;
выводится 12 ?
d - int(d). – Эникейщик Oct 14 '19 at 20:45double x = (d - int(d)); printf(%.14e %.17e\n", x, x)печатает1.30000000000000e-01 1.29999999999999893e-01. Т.о. наблюдаемая "ошибка " это правильный результат (int z = x * 100даст 12, а не 13). Наблюдаемые при печати double переменной округления происходят именно при форматном выводе – avp Oct 14 '19 at 21:14