在 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+1x代表一个正整数。 不确定您是否正在寻找这个,但这是一个函数std::nextafter,它为您提供给定浮点数的下一个可能值。 【参考方案1】:

IEEE 754 浮点变量a 的最小正值在其中得到a == a+12^bits_precision,其中bits_precision 比有效位中的位数多1,可以用@ 找到987654326@.

对于 32 位 float,这是 24;对于 64 位 double,即 53(同样,在非常常见的 IEEE 754 上下文中)。

Demo

【讨论】:

一个小问题:这些值适用于 32 位 IEEE-754 float 和 64 位 IEEE-754 double .编译器不需要使用这些类型,因此某些晦涩的系统可能对浮点类型使用不同的表示形式,具有不同的大小和/或有效数字大小和指数大小之间的不同权衡。 +1。

以上是关于在 c++ 中可以容纳啥最大整数,能够将浮点类型加 1?的主要内容,如果未能解决你的问题,请参考以下文章

为什么是C ++中的“整数”数据类型,能够容纳“ true”或“ false;布尔值

枚举占多少字节?

java中整除和浮点除啥区别

C语言中,浮点类型和整数类型的区别具体在哪些方面?

short 是浮点类型吗?

为啥C++里面浮点与整数相乘的结果跟在计算器里的不一样呢?浮点我选的float