为什么 floor 不返回整数?
Why doesn't floor return an integer?
刚才我偶然发现了一个事实,c++函数floor
返回与您传递给它的相同类型,无论是float
, double
还是其他类型。
根据该引用,该函数返回一个向下舍入的整数值。为什么这不是整数?
因为整型不能保存与float
或double
相同的整型值
int main(int argc, char *argv[]) {
std::cout << floor(std::numeric_limits<float>::max()) << std::endl;
std::cout << static_cast<long>(floor(std::numeric_limits<float>::max())) << ::endl;
}
输出(在我的x86_64架构上)
3.40282e+38
-9223372036854775808
此外,浮点数可以保存NaN, +Inf和-Inf,所有这些都是由floor()
操作保留的。这些值都不能用整型表示。
int main(int argc, char *argv[]) {
std::cout << floor(std::numeric_limits<float>::quiet_NaN()) << std::endl;
std::cout << floor(std::numeric_limits<float>::infinity()) << std::endl;
std::cout << floor(-std::numeric_limits<float>::infinity()) << std::endl;
}
输出nan
inf
-inf
相关文章:
- 让bool方法返回其他整数
- C 字符串返回字符串的整数/双精度/长整型值
- 如何使此递归函数从给定的起始位置返回最小的整数?
- 如何优化代码以返回最接近给定整数的数字,但给定列表中不存在?
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- C++:为什么我的掷骰子函数在掷骰子数量时只返回偶数整数?
- 从 C++ 中定义的异常返回整数
- 递归返回可被给定整数 k 整除的位数
- 类型转换问题:返回为整数而不是浮点/类型
- GMP-将64位整数存储在mpz_t/mpz_class中,并返回64位整数
- 给定一个整数 N>0,区间 [0, 2^N) 中有多少个整数正好有 N-1 个设置位?编写一个返回正确答案的简短函数
- 无法将答案从矢量返回到整数
- 如何使用递归函数返回数组中整数的索引?
- 如何修改此函数,以便如果函数的参数是特定结构,则返回具有较大整数的结构?
- 对于 ((无符号整数)0-1)返回 true>0
- C++ - 整数除以整数返回错误答案
- 整数返回值的按位算术
- C++ 一种方法,该方法将十进制值作为用布尔数组表示的二进制的整数返回
- C++ 如何使模板<T>f() 为整数 T 返回 -1,为指针类型返回 nullptr
- 将函数的整数返回值与 C++ 中的布尔值进行比较