如何打印完整的浮点数而不是"1.01383e+007"?

How to print full float numbers instead of "1.01383e+007"?

本文关键字:01383e+007 浮点数 何打印 打印      更新时间:2023-10-16

我想打印出一些大的浮点数总和的完整合法值,但是当浮点数足够大时,您会得到这种符号,例如"1.01383e+007"。如何获得合法价值?

我理解你的意思是你不想输出科学格式。如果是这样,那么你可以像这样控制流格式:

cout << setiosflags(ios::fixed) << thefloat << endl;

浮点数的一个重要特征是,对于大值,它们没有与所有有效数字(直到小数点)相关联的精度。"科学"的显示合理地反映了内部存储的固有现实。

如果您想显示10138300(例如),请使用具有更多有效数字的数据类型,例如C家族语言中的double,其值最高可达1015左右。或者使用扩展的精度整数表示,如longlong long,具体取决于CPU体系结构和编程语言或环境。

float数据类型不存储精确值,因此不可能打印出精确值。

float中,32位分为三个不同的部分:符号位,指数和尾数,如:S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM

简单来说,float数据类型将只存储"1.23*10^7",而不是存储精确的"12345678"(double数据类型将存储"1.2345*10^7")。其他数字丢失

如果你对大数的精确值感兴趣,也许你可以看看c++中的"大整数"库。

您需要使用十进制库,例如gmp;"1.01383e+007"格式是由于float的存储方式。