如何在c中将指数格式转换为十进制格式

时间:2009-12-22 11:07:55

标签: c

我想转换指数5.52794e + 15。

4 个答案:

答案 0 :(得分:2)

它不适合int,但long long会适用:

long long x = 5.52794e+15;

答案 1 :(得分:2)

替代方案:您希望将其打印为整数。

double d = 5.52794e+15;
printf("%15.0lf\n",d );

给出:

5527940000000000

答案 2 :(得分:1)

除了使用long longs,您还可以:

使用压缩十进制库。

您可以在标准的int或long中使用对数(或几何等)缩放。

使用整数结构,表示有效数和指数,并手动(或使用好的库)进行浮点数学运算。

我使用了所有三种方法,它们都有起伏。打包的十进制是最慢和最准确的。对数缩放是迄今为止最快且最容易实现的,并且最不准确。通过整数重现浮点的性能介于两者之间,与“实际”浮点的精度基本相同,并且难以实现。

所有3都比使用浮点硬件慢 - 假设你的硬件有浮点!

答案 3 :(得分:-1)

长多长x = 5.52794e + 15; 其中指数“15”必须是整数,系数5.52794是任何实数或甚至可以是整数。 尾数的最大值刚好超过32,000,000。任何超过此值的值都将被截断。 如果您有一个总计并且正在添加小值并保持准确的总数,这就变得非常重要。 - 例如,您正在添加的值不是整数的电源使用情况。