C ++中Float变量的指数值限制

时间:2015-07-22 22:09:21

标签: c++

我想以一些精确的形式回答我的答案,但不是出于输入输出目的。

float a = cos ( 90*(PI/180)) gives 1.794897E-09

我想在我的变量中输入最多8位小数,这将给出

0.00000000

setprecision或其他方法无助于将值存储在变量中。怎么存储?基本上它甚至可能不是8或9位数...我想要的是在我的答案中限制exponentiol形式

2 个答案:

答案 0 :(得分:0)

您受所使用类型的限制。单个精度浮点数只能表示6到9个有效十进制数字。

https://en.wikipedia.org/wiki/Single-precision_floating-point_format

请记住,float不是十进制值。所以你看到的是十进制表示。如果您想要十进制表示中的更多数字,请使用双精度。

https://en.wikipedia.org/wiki/Double-precision_floating-point_format

双精度浮点数可以表示15-17位小数精度的值。这应该保证你需要的最少8个。

答案 1 :(得分:0)

浮点值的精度和编码由IEEE 754具体定义。如果没有定义你自己的浮点实现应该存储在内存中,你不能真正改变内存的精度,如何编码和存储在内存中。

如果您想要更高的精确度,可以使用 double 。所有数学函数都适用于双打。