我想转换指数5.52794e + 15。
答案 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。任何超过此值的值都将被截断。 如果您有一个总计并且正在添加小值并保持准确的总数,这就变得非常重要。 - 例如,您正在添加的值不是整数的电源使用情况。