【问题标题】:Correctly display scientific notation in c++在 C++ 中正确显示科学计数法
【发布时间】:2019-10-12 21:50:10
【问题描述】:
#include <iostream>
#include <iomanip>

using namespace std;
int main()
 {
    long double n;
    cin>>n;
    cout<<setprecision(4)<<fixed<<scientific<<n;

    return 0;
}

例如:如果我在程序中输入 256 之类的内容,我会得到 2.5600e+002 作为输出。但我想打印 2.5600*(10^2)。我还希望能够控制得到多少位数显示在小数点后。

有人可以帮我吗?

【问题讨论】:

  • I want to print 2.5600*(10^2) 然后实现一个这样打印它的函数。 2.5600e+002 输出是正确的。 E-notation 看起来像是科学计数法的有效表示法。请注意,fixedscientific 都以十六进制格式打印数字。
  • setprecision控制小数位数;正如@KamilCuk 所说,如果你想要不同的格式,你可以自己写。
  • 我知道答案是正确的,但我想像教科书一样格式化。
  • @ScottHunter ..好的,我将使用 setprecision,但如何编写不同的格式?

标签: c++ formatting format scientific-notation


【解决方案1】:

如 cmets 中所述,该表示法对于科学计数法是正确的。如果你想按照自己的方式打印,你必须为它创建一个特殊的函数,像这样:

void PrintScientific(long double d) {
    int e = 0;
    if(d < 1 && d > -1) {
        for(e = 0; d*10 < 10 && d*10 > -10; e--) {
            d *= 10;
        }
    } else {
       for(e = 0; d/10 > 1 || d/10 < -1; e++) {
            d /= 10;
        }

    }

    std::cout << std::setprecision(4) << std::fixed << d << "*10^" << e;
}

这可能不是您所需要的,但应该可以帮助您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 2013-05-30
    • 1970-01-01
    • 2017-07-08
    • 1970-01-01
    相关资源
    最近更新 更多