gpt4 book ai didi

c - 将具有整数值的 double 值转换为整数时,是否保证执行 'properly' ?

转载 作者:太空狗 更新时间:2023-10-29 16:41:11 26 4
gpt4 key购买 nike

当 double 具有“精确”整数值时,如下所示:

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

当通过 (int)x、(int)y、(int)z 转换为整数类型时,是否保证它会正确舍入为 1、123123 和 -4? (并且不截断为 0、123122 或 -5 b/c 的 float )。我根据this page询问b/c (这是关于 lua 中的 fp,一种默认情况下只有 double 作为其数字类型的语言),根据 IEEE 754 讨论了 double 的整数运算是如何精确的,但我不确定在调用 C 函数时是否整数类型参数,我需要担心手动舍入 double ,或者当 double 具有精确的整数值时会处理。

最佳答案

是的,如果整数值适合 int

double 可以表示超出您的 int 类型范围的整数值。例如,如果您的 int 类型只有 16 位,则 123123.0 无法转换为 int

也不能保证 double 可以表示特定类型可以表示的每个值。 IEEE 754 使用类似 52 或 53 位的尾数。如果您的 long 有 64 位,那么将非常大的 long 转换为 double 并返回可能不会得到相同的值。

关于c - 将具有整数值的 double 值转换为整数时,是否保证执行 'properly' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10939605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com