在 c++ 中可以容纳啥最大整数,能够将浮点类型加 1?
Posted
技术标签:
【中文标题】在 c++ 中可以容纳啥最大整数,能够将浮点类型加 1?【英文标题】:What maximal integer, capable of adding 1 a float type can hold in c++?在 c++ 中可以容纳什么最大整数,能够将浮点类型加 1? 【发布时间】:2020-09-23 04:41:25 【问题描述】:假设我使用float
来保存整数值并向其添加小位移,大约为 1 秒或 2 秒。在哪个值float
将停止变化?这个值的名称是什么?
【问题讨论】:
"float
的哪个值会停止变化?" - 你是什么意思?您对float
执行的任何算术运算都会更改其值,无论其结果如何,是否溢出等。没有“停止”值可以防止进一步的更改发生。
@RemyLebeau 我不明白。如果float很大比如1e100,那么加1不会改变它,我错了吗?
为什么要使用浮点数来保存整数值?使用整数!
也许你想改写这个问题来澄清你想知道最小的浮点数x
,这样x == x+1
和x
代表一个正整数。
不确定您是否正在寻找这个,但这是一个函数std::nextafter,它为您提供给定浮点数的下一个可能值。
【参考方案1】:
IEEE 754 浮点变量a
的最小正值在其中得到a == a+1
是2^bits_precision
,其中bits_precision
比有效位中的位数多1,可以用@ 找到987654326@.
对于 32 位 float
,这是 24;对于 64 位 double
,即 53(同样,在非常常见的 IEEE 754 上下文中)。
Demo
【讨论】:
一个小问题:这些值适用于 32 位 IEEE-754float
和 64 位 IEEE-754 double
.编译器不需要使用这些类型,因此某些晦涩的系统可能对浮点类型使用不同的表示形式,具有不同的大小和/或有效数字大小和指数大小之间的不同权衡。 +1。以上是关于在 c++ 中可以容纳啥最大整数,能够将浮点类型加 1?的主要内容,如果未能解决你的问题,请参考以下文章