【问题标题】:Trouble displaying a specific number in a loop without scientific notation in C++在 C++ 中没有科学记数法的情况下无法在循环中显示特定数字
【发布时间】:2018-03-04 15:32:25
【问题描述】:

好的,所以我正在编写一个程序,其总体目的并不一定很重要,但是在程序中有一点我试图打印出一个显示 n、n! 和 x 的表格^n(其中 n 和 x 都是用户输入)。

我目前的代码如下:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main()
{
    float x, xn, factorial = 1;
    float n = 1;

    cout << "Enter an angle in radians: ";
    cin >> x;
    while (n <= 1)
    {
        cout << "Enter the number of terms to be included into the Taylor series expansion: ";
        cin >> n;
        if (n < 1)
        {
            cout << "Error! Try again\n";
        }
    }

    cout << "n\tn!\tx^n\t\n";
    for (int i = 1; i <= n; i++)
    {
        cout << i;
        factorial *= i;
        cout << "\t" << factorial;
        xn = pow(x, i);
        cout << "\t" << setprecision(i) << xn;
        cout << endl;

    }

    return 0;
}

现在,我遇到的问题是它在超过 5 个小数位后开始以科学计数法显示我的 x^n。我不希望它这样做。正如您可能已经注意到的那样,我尝试使用 setprecision(i) ,但这不起作用。这让我很困惑,因为 a.)我不确定我是否知道我需要用来让它停止以科学计数法显示的代码和 b.)我不想要 n 和 n 的其他输出!受到我将不得不在 x^n 的输出上使用的操作的影响,这对我来说很棘手,因为它们都是在同一个循环中计算和输出的。我在这里不知所措,非常感谢任何帮助!我会为大家发布程序输出的图像,但似乎我需要更多的声誉才能做到这一点。

另外,顺便说一句,如果您对如何更好地格式化我的表格有任何建议,我很想听听。

【问题讨论】:

    标签: c++ visual-c++


    【解决方案1】:

    在打印xn之前,您可以将流切换为使用固定表示法,然后再切换回默认浮点数:

    cout << "\t" << setprecision(i) << std::fixed << xn << std::defaultfloat;
    

    参考:http://en.cppreference.com/w/cpp/io/manip/fixed

    【讨论】:

    • 这就是诀窍!谢谢一堆。我还有一个问题——我在来到这里之前尝试了几乎完全相同的代码,但我在 setprecision(i) 之前有 std::fixed (你的代码中的情况正好相反)——但它没有工作。你知道这是为什么吗?我觉得我可能没有完全理解这两个语句是如何协同工作的。
    • 没有理由。您可以在此处 (coliru) 看到即使位置交换了它也能正常工作
    猜你喜欢
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    相关资源
    最近更新 更多