【发布时间】:2010-01-29 10:45:12
【问题描述】:
我需要以科学计数法输出数字,这样小数点前总是有一个“0”。
例如对于数字 x = 134.87546,我需要产生输出 0.134875E03 不是 1.348755E02
有人知道怎么做吗?
提前致谢——设拉子。
【问题讨论】:
标签: c++ formatting scientific-notation
我需要以科学计数法输出数字,这样小数点前总是有一个“0”。
例如对于数字 x = 134.87546,我需要产生输出 0.134875E03 不是 1.348755E02
有人知道怎么做吗?
提前致谢——设拉子。
【问题讨论】:
标签: c++ formatting scientific-notation
int exp = (int)log10(input)+1;
double shifted = input / pow(10.0, exp);
printf("%fE%d", shifted, exp);
【讨论】:
int exponent = floor(log10(num)) + 1;
然后只打印“0.”,不带小数的数字,“E”,然后是指数。
【讨论】:
log()
是自然对数,在 C 标准库中。你想要log10()
。
10
,ceil(log10(num))
将返回1
,而0.
与10
连接为0.10
,乘以10^1
为@987654331 @ 不等于 10
。你真的想要地板,再加上 1。
您可以使用Boost Format library 进行调查,这是一个通用的输出格式库。
【讨论】: