我正在阅读c ++中的正负无穷大。
我读到整数类型没有无限值,即。 std::numeric_limits<int>::infinity();
无效,但std::numeric_limits<int>::max();
将起作用,并将代表整数类型可以表示的最大可能值。
所以整数类型的std::numeric_limits<int>::max();
可以作为positive infinite limit
吗?
或者整数类型只有max value
且infinity value
不是真的?
答案 0 :(得分:3)
整数总是有限的。
你能找到的最接近的是通过设置一个整数到它的最大值,对于有符号整数,它只有大约20亿的东西。
std :: numeric_limits有一个has_infinity成员,你可以用它来检查你想要的类型是否具有无限表示,这通常只在浮点数上,例如float和double。
答案 1 :(得分:2)
浮点数具有特殊的位模式,表示“值为无穷大”,当某些操作的结果定义为无限时使用。
整数值具有设定的位数,所有位用于表示数值。没有“特殊位模式”,它只是位位置的总和意味着什么。
编辑:在我的AMD64架构程序员手册的硬拷贝的第315页上,它说
无穷大。无穷大是正数或负数+∞和 -∞,其中整数位为1,偏置指数为最大值,分数为0.无穷大是最大数字 可以浮点格式表示,负无穷小 比任何有限数和正无穷大都要大于任何有限数 有限数(即仿射意义)。
当非零,非无限数时,产生无限结果 除以0或乘以无穷大,或加入无穷大时 无穷大或为0.算术无穷大是准确的。例如,添加 任何浮点数到+∞都会得到+∞的结果 算术比较在无穷大上正常工作。出现例外情况 只有当使用无穷大作为源操作数构成一个 无效的操作。
(任何输入错误都是我的)