寻找科学记数法(E + XX)

时间:2013-10-10 08:12:04

标签: c++ double scientific-notation

我试图用double找到科学记数法,但我找不到任何功能或方法来做到这一点。

我的变量是双倍的,我需要从中得到科学记数法,例如:

  

3.44828e +的 026

我需要以某种方式从我的双变量中获取数字 026

顺便说一句,这个数字实际上是28长而不是26,有没有办法解决这个问题呢? (不在结果中加2)

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果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

答案 1 :(得分:1)

类似于俞昊的答案,但这个似乎也适用于负指数(但我还没有完全测试过):

#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