mateuszq Temat założony przez niniejszego użytkownika |
[C++] Prezentacja liczb zmiennoprzecinkowych w konsoli » 2013-11-13 13:04:53 Witam, pisze programik w którym podajesz swoj numer po czym program przelicza wczesniej zdefiniowane wspolrzedne na nowe (dodaje do starych wspolrzednych twoj numer) a nastepnie mnozy kązda wspolrzedna X przez wspolrzedna Y i wyswietla na ekranie. I teraz mam taki problem. Wspolrzedne skladaja sie z 3-4 cyfr dokladnosc d 2 miejsc po przecinku. Kiedy mnoży wspolrzedne zamiast wyswietlenia normalnego wyniku wyswietla go w taki sposob: 1.16892e + 006 1.5303e+006 1.88656e+006 itd. Co zrobic zeby wynik byl wyswietlany normalnie? Wydaje mi sie ze wynik miesci sie w typie double, ale moze sie myle? Poniżej kod: #include<iostream> #include<cmath> #include<conio.h> #include<stdio.h>
using namespace std;
double numer_dziennik; double Wspolrzedne[ 14 ][ 2 ] = { 1446.97, 800.99, 1446.97, 1049.98, 1488.43, 1259.35, 1435.98, 1412.16, 1445.65, 1638.97, 1289.11, 1772.31, 1087.33, 1843.36, 942.67, 1713.81, 817.04, 1447.08, 795.63, 1153.61, 834.97, 894.66, 1016.41, 744.14, 1235.79, 704.06, 1172.15, 980.23 };
double WykazWspolrzednych( double numer ) { int wiersze = 14, kolumny = 2; double l = 0; for( int i = 0; i < wiersze; i++ ) { for( int k = 0; k < kolumny; k++ ) { Wspolrzedne[ i ][ k ] = Wspolrzedne[ i ][ k ] + numer; if( k == 0 ) { cout << "Wspolrzedne X liczby: " << i + 1 << " to:\t " << Wspolrzedne[ i ][ 0 ]; } else { cout << "\tWspolrzedne Y liczby: " << i + 1 << " to:\t " << Wspolrzedne[ i ][ k ] << endl; } } } }
long double IloczynWsp() { long double wynik11 = 0; cout << "\n"; for( int i = 0; i < 13; i++ ) { wynik11 = Wspolrzedne[ i ][ 0 ] * Wspolrzedne[ i ][ 1 ]; cout << wynik11 << endl; } return wynik11; }
int main() { cout << "Podaj swoj numer: "; cin >> numer_dziennik; cout << "************************************\n"; cout << "WYKAZ WSPOLRZEDNYCH PUNKTOW OSNOWY *" << endl; cout << "*****************************************************************************************\n\n"; WykazWspolrzednych( numer_dziennik ); cout << "\n*****************************************************************************************"; cout << IloczynWsp(); getch(); return 0; }
|
|
Monika90 |
» 2013-11-13 13:11:59 Wypróbuj rózne formaty (std::fixed, std::scientific, std::hexfloat, std::defaultfloat) i różne precyzje (std::setprecision(NNN)), może znajdziesz wśród nich taki, który uznasz za normalny. |
|
mateuszq Temat założony przez niniejszego użytkownika |
» 2013-11-13 13:20:23 Może się źle sprecyzowalem chodzi mi o to zeby wyswietlił liczbe normalnie w formie dziesietnęj |
|
Monika90 |
» 2013-11-13 13:25:41 1.88656e+006 - to jest postać dziesiętna Być może chodzi ci o std::fixed |
|
mateuszq Temat założony przez niniejszego użytkownika |
» 2013-11-13 13:50:02 zaraz wypróbuje :) |
|
mateuszq Temat założony przez niniejszego użytkownika |
» 2013-11-13 14:01:34 std::fixed pomogło! wielkie dzieki :) |
|
Monika90 |
» 2013-11-13 14:06:05 Sprawdź też std::setprecision z <iomanip>, np. std::setprecision(15) to może być nawet lepsze niż std::fixed. |
|
« 1 » |