Правильно отображать научную нотацию на с ++ - PullRequest
0 голосов
/ 13 октября 2019
#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). Я также хочу иметь возможность контролировать, какпосле десятичной точки отображается много цифр.

Кто-нибудь может мне помочь с этим?

1 Ответ

0 голосов
/ 13 октября 2019

Как уже упоминалось в комментариях, обозначения являются правильными для научных обозначений. Если вы хотите, чтобы он печатался по-вашему, вам нужно будет создать для него специальную функцию, например:

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;
}

Это может быть не совсем то, что вам нужно, но вам следует начать.

...