我试图用 double 找到科学记数法,但我找不到任何功能或方法来做到这一点。
我的变量是双倍的,我需要从中获取科学记数法,例如:
3.44828e+ 026
我需要以某种方式从我的双变量中获取数字026 。
顺便说一句,这个数字实际上是 28 长而不是 26,有没有办法解决这个问题?(结果不加 2)
提前致谢!
我试图用 double 找到科学记数法,但我找不到任何功能或方法来做到这一点。
我的变量是双倍的,我需要从中获取科学记数法,例如:
3.44828e+ 026
我需要以某种方式从我的双变量中获取数字026 。
顺便说一句,这个数字实际上是 28 长而不是 26,有没有办法解决这个问题?(结果不加 2)
提前致谢!
如果y
是非负数,这应该有效。对于负数y
,如果相差一,则结果。如果需要,请自行修复。
#include <iostream>
#include <cmath>
int main()
{
double x = 3.44828e+026;
int y = (int)log10(x);
std::cout << y << std::endl;
return 0;
}
输出:26
类似于于浩的答案,但这个似乎也适用于负指数(但我还没有完全测试过):
#include <iostream>
#include <cmath>
// pre-condition: x != 0.0
int exponent(double x) {
double y = log10(x);
if (y < 0.0)
y -= 1.0;
return static_cast<int>(y);
}
int main() {
std::cout << exponent(3.44828e+026) << '\n';
std::cout << exponent(3.44828e-026) << '\n';
}
输出26
和-26
。