C:将 double 向下舍入为 int 的更好方法

标签 c floating-point-conversion math.h

我的问题是;通过 roundedInt = (int)unRoundedDouble 和 roundedInt = (int)(floor(unRoundedDouble)) 将 double 向下舍入为 int 之间有功能差异吗?

我在代码中看到了后者的使用,并认为这可能是出于安全或功能原因,但无法弄清楚会以不同的方式处理什么。

此外:四舍五入的 Double 不会太大而无法放入 int,这是预先确定的。

最佳答案

它们本质上是不同的。转换为 int 会将非整数部分截断为 0floor 也会做同样的事情,但是朝向-无穷大。

示例:

double d = -1.234;
printf("%d %d\n", (int)d, (int)floor(d));

产量:

-1 -2

关于C:将 double 向下舍入为 int 的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28085955/

相关文章:

在迷你 shell 中挂起 2 管道函数时,无法将信息存储在全局变量中

java - 如何将 Java double 转换为 byte[],以及 byte[] 转换为 double(IEEE 754 double 二进制浮点格式)

将二进制浮点 "1101.11"转换为十进制 (13.75) 的正确算法?

c - 使用 C math.h 计算数字的正弦值

C - 舍入问题 (CS50)

c++ - 为什么 acos() 在使用点积的结果时会产生 "nan(ind)"?

c - 在调用返回行为方面,fork() 和 exec() 系统调用与其他系统调用有何不同?

c - 保持线程存活 (pthread, c)

c++ - 使用定点表示法将 double 转换为字符串,没有尾随零且没有 sprintf

c - 尽管未设置 AI_PASSIVE,Getaddrinfo() 返回通配符地址