Когда двойное число с целочисленным значением приводится к целому числу, гарантируется ли это "правильно"?

Когда двойное число имеет «точное» целочисленное значение, например:

double x = 1.0;
double y = 123123;
double z = -4.000000;

Гарантируется ли округление правильно до 1, 123123 и -4 при приведении к целочисленному типу через (int)x, (int)y, (int)z? (И не усекать до 0, 123122 или -5 b/c странностей с плавающей запятой).Я спрашиваю b/c в соответствии с этой страницей (которая посвящена fp в lua, языке, который по умолчанию имеет только двойные числа в качестве числового типа), рассказывает о том, как целочисленные операции с двойными числами являются точными в соответствии с IEEE 754. , но я не уверен, что при вызове C-функций с параметрами целочисленного типа мне нужно беспокоиться об округлении двойных чисел вручную, или об этом позаботятся, когда двойные числа имеют точные целые значения.

12
задан user1481 7 June 2012 в 20:46
поделиться