Из-за чего возникает странное поведение функции std::pow при преобразовании к int?

Если рассмотреть следующий код:

int main()
{
    int get_cub_rt_pow, get_cub_rt_cbrt;
    get_cub_rt_pow = std::pow(1000000000, 1 / 3.0);
    get_cub_rt_cbrt = std::cbrt(1000000000);
    std::cout << std::pow(1000000000, 1 / 3.0) << std::endl;
    std::cout << get_cub_rt_pow << std::endl;
    std::cout << get_cub_rt_cbrt << std::endl;
}

То вывод будет:

1000
999
1000

Почему int(std::pow(1e9, 1 / 3.0)) != 1000 ?

Почему с int(std::cbrt(1e9)) такой проблемы не возникает?


Ответы (0 шт):