简单的问题:从int型(比如100)到double型的转换是向上或向下“舍入”到下一个double型,还是总是舍入到最近的一个(最小的delta)?例如,对于static_cast<double>(100):
static_cast<double>(100)
如果d2〈d1,它会投哪一边?附加问题:我能用特殊的函数强制处理器向下或向上“舍入”到close double吗?在我看来,不幸的是没有floor<double>或ceil<double>。
floor<double>
ceil<double>
osh3o9ms1#
请注意,32位int可以由64位IEEE 754 double精确表示(实际上它可以精确表示多达53位整数)。如果使用的整数大于浮点类型所能表示的整数,则Real floating-integer conversions中的规则适用:
int
double
没有c++标准函数来控制舍入模式,大多数实现将使用IEEE舍入到最近。
1条答案
按热度按时间osh3o9ms1#
请注意,32位
int
可以由64位IEEE 754double
精确表示(实际上它可以精确表示多达53位整数)。如果使用的整数大于浮点类型所能表示的整数,则Real floating-integer conversions中的规则适用:
没有c++标准函数来控制舍入模式,大多数实现将使用IEEE舍入到最近。