相关疑难解决方法(0)

可以在便携式C中写入从double到int的转换

我需要编写函数double_to_int(double val, int *err),在可能的情况下,它会将double val转换为整数; 否则报告错误(NAN/INFs/OUT_OF_RANGE).

所以伪代码实现看起来像:

if isnan(val):
    err = ERR_NAN
    return 0
if val < MAX_INT:
    err = ERR_MINUS_INF
    return MIN_INT
if ...
return (int)val
Run Code Online (Sandbox Code Playgroud)

在SO上至少有两个类似的问题:在这个答案中它以足够干净的方式解决了,虽然它是C++解决方案 - 在C中我们没有signed int的可移植数字.在这个答案中,它解释了为什么我们不能只检查(val > INT_MAX || val < INT_MIN).

因此,我看到的唯一可能的清洁方式是使用浮点环境,但它被称为实现定义的功能.

所以我的问题是:有没有办法以double_to_int跨平台的方式实现功能(仅基于C标准,甚至不考虑支持IEEE-754的目标平台).

c floating-point standards

19
推荐指数
1
解决办法
677
查看次数

标签 统计

c ×1

floating-point ×1

standards ×1