【发布时间】: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 进行调查,这是一个通用的输出格式库。
【讨论】: