Вопрос, связанный с Почему это преобразование double в int не работает?
#include <iostream>
int main()
{
double x = 4.10;
double j = x * 100;
int k = (int) j;
std::cout << k;
}
Output: 409
НО с 10 вместо 100:
#include <iostream>
int main()
{
double x = 4.10;
double j = x * 10;
int k = (int) j;
std::cout << k;
}
Output: 41
Поскольку фактически сохраненное значение составляет что-то вроде 4.099999... Я ожидаю получить 40 из-за усечения, а не 41, что является точным значением.
Что случилось ?
посмотрите на значение j, прежде чем сделать его int
Раунд операций с плавающей запятой IEEE. Поскольку у вас нет точной точности, которая может увеличиваться или уменьшаться в зависимости от фактических задействованных чисел.
Что ж, это было очевидно... спасибо!





FWIW,
* 1000возвращает вас к 4100