sách gpt4 ai đã đi

c - 如何在 C 中将 double 转换为 int?

In lại Tác giả: Space Dog 更新时间:2023-10-29 16:25:31 26 4
mua khóa gpt4 Nike

double a;
a = 3669.0;
int b;
b = a;

我在 b 中得到 3668,而不是 3669。

如何解决这个问题? 如果有 3559.8,我也想要 3559 而不是 3560。

1 Câu trả lời

我怀疑你Thực ra没有这个问题 - 我怀疑你真的有:

double a = callSomeFunction();
// Examine a in the window or via logging, and decide it's 3669.0

// Now cast
int b = (int) a;
// Now a is 3668

让我这么说的是,虽然许多十进制值不能准确地存储在trôi nổi hoặcgấp đôi 中是真的,但事实并非如此。 t 对这种数量级的整数成立。它们可以很容易地以二进制浮点形式精确表示。 (不能总是精确表示非常大的整数,但我们在这里不处理非常大的整数。)

我强烈怀疑您的 gấp đôi giá trịThực ra略小于 3669.0,但无论您使用什么诊断设备,它都显示为 3669.0。转换为整数值只是执行截断,而不是舍入 - 因此出现了问题。

假设你的gấp đôi类型是IEEE-754 64位类型,小于3669.0的最大值正好是

3668.99999999999954525264911353588104248046875

因此,如果您使用任何诊断方法,其中该值将显示为 3669.0,那么很可能(我会说很可能)这就是正在发生的事情。

关于c - 如何在 C 中将 double 转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7657326/

26 4 0
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com