gpt4 book ai didi

c - 如何在 C 语言中正确舍入 double ?

转载 作者:行者123 更新时间:2023-11-30 18:33:11 25 4
gpt4 key购买 nike

由于某种原因,ceil(x)将四舍五入到 x+1。

例如:

double og_grade = 50;
double fact_grade = ceil(og_grade*1.1);

og_grade*1.1应该是 55.0000,但是 ceil(og_grade*1.1)返回 56.0000

请注意og_grade始终是整数。

最佳答案

I tried the ceil(x) function, but for some reason when x in already round, it rounds it up to x+1

不,这意味着 ceil 的实现有缺陷。并非不可能,但不可能。

观察到这种效果的 x 实际上可能不是整数,并且在格式化或调试器中省略了小数部分。

假设 IEEE754,最接近 到 1.1 的 double 略大于该值;这很可能解释了您的结果。

就您而言,鉴于 op_grade 实际上是一个整数,您最好的选择是使用 int 作为 op_grade,并且改为乘以 11;随后的舍入检查既简单又精确。

关于c - 如何在 C 语言中正确舍入 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59090506/

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