2013-11-25 53 views
1

所以,這是我的問題,我的「cene」總是不是一個真正的數字,它總是有一個字符'e'在裏面......我沒有知道我做錯了什麼。這是我的代碼:爲什麼在打印浮動值時出現字符'e'

#include <iostream> //Vkljucitev knjiznice iostream 
#include <string> //Vkljucitev knjiznice string 
#include <stdlib.h> //Vkljucitev knjiznice stdlib.h 
#include <windows.h> //Vkljucitev knjiznice windows.h 

using namespace std; //Uporaba std:: 

//Razred za datum, kasneje vsiljen 
class datum 
{ 
    public: 
    int leto; 
    int mesec; 
    int dan; 
}; 

//Razred za racun 
class racun 
{ 
private: 
    string naslov; //Rezervacija string, za ime racuna 
    float cena[500]; // Skupna cena na računu 
    int i; // Števec 
public: 
    datum izdaje; //datum izdaje za racun 
    void nastavi_izracunaj_izpisi() //Podprogram za nastavitev, izracun in izpis racuna 
    { 
//_______________________________________________________________________________________________________________ 

     cout<<"Podaj naslov racuna"<<endl; 
     getline(cin,naslov); 
     cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl; 
     izdaje.dan = rand() % 30 + 1; //Dan 
     izdaje.mesec = rand() % 12 + 1; //Mesec 
     izdaje.leto = rand() % 30 + 1985; //Leto 
     i = rand() % 99 + 1; // Koliko računov smo imeli. 
     int produkti; //rezervacija za vse produkte 
     produkti = i + rand() % 199 + 1; //Koliko produktov smo imeli 
     cout<<"Produkti= "<<produkti<<endl; 
     float produkt1[500]; //cena prvega produkta 
     float produkt2[500]; //cena drugega produkta 
     int a; //števec produktov 
     a=0; //ki ga nastavimo na nič 
//_________________________________________________________________________________________________________________ 

//Zanka za pridobitev dveh produktov 
     do 
      { 
       produkt1[a] = rand() % 199 +1; 
       produkt2[a] = rand() % 199 +1; 
       a=a+1; 
      }while(a!=produkti); 
//Kateri produkt naj izpise 
     int b; //kateri produkt bo izpisalo 
     b = rand() % 199 +1; 

//____________________________________________________________________________________________________________________ 

//Zanka za pridobitev cene 
     int h; 
     h=0; 
     do 
      { 
       cout<<"Cena: "<<cena[h]<<endl; 
       cout<<"Produkt1: "<<produkt1[b]<<endl; 
       cout<<"Produkt2: "<<produkt2[b]<<endl; 
       cout<<"H: "<<h<<endl; 
       system("PAUSE"); 
       cena[h]=produkt1[b] + produkt2[b]; 
       h=h+1; 
      }while(h!= produkti); 



//______________________________________________________________________________________________________________________ 

     //DDV 
     float ddv = 1.12797374897; //DDV vrednost 
     float cena2; //DDV cene 
     float cenaddv; //cena z DDV-jem 
     cena2=cena[h]/ddv; //izracun za DDV cene 
     cenaddv=cena[h]+cena2; //izracun za ceno z DDV-jem 
//________________________________________________________________________________________________________________________ 

//izpis 
     cout<<naslov<<endl<<endl; 
     cout<<endl<<"Dan: "<<izdaje.dan<<endl<<"Mesec: "<<izdaje.mesec<<endl<<"Leto: "<<izdaje.leto<<endl; 
     cout<<"Produkt1 = "<<produkt1[b]<<"$"<<endl<<"Produkt2 = "<<produkt2[b]<<"$"<<endl; 
     cout<<"Kupili ste: "<<produkti<<" produktov"<<endl; //izpis za produkte 
     cout<<"Cena brez ddv: "<<cena[h]<<"$"<<endl<<"DDV: "<<cena2<<"$"<<endl<<"Cena z DDV: "<<cenaddv<<"$"<<endl; 
    } 
}; 

//Glavni program 
int main() 
{ 
    racun nekaj; //Rezervacija objekta 
    nekaj.nastavi_izracunaj_izpisi(); //Izpis metode 
    system("PAUSE"); //Zamrzni zaslon 
    return 0; //Koncaj program 
} 

有人可以解釋我應該怎麼做?
P.S.該計劃在斯洛維尼亞語中。

編輯:
我解決它...而不是這樣做:

//Zanka za pridobitev cene 
     int h; 
     h=0; 
     do 
      { 
       cout<<"Cena: "<<cena[h]<<endl; 
       cout<<"Produkt1: "<<produkt1[b]<<endl; 
       cout<<"Produkt2: "<<produkt2[b]<<endl; 
       cout<<"H: "<<h<<endl; 
       system("PAUSE"); 
       cena[h]=produkt1[b] + produkt2[b]; 
       h=h+1; 
      }while(h!= produkti); 

我這樣做:

cena = produkti*(produkt1[b]+produkt2[b]); 
+0

我沒有看到任何'srand'調用。爲自己節省麻煩並使用''。 – chris

+0

「2.67e + 14」這個數字只是科學記數法,意思是'2.67 * 10^14' –

+0

但是cene [0] = - 2.00124e + 12或類似的東西 – user3029612

回答

2

您已經聲明cena爲float。您在輸出中看到的e,如1.035e2是科學記數法的一部分。

如果您需要輸出特定格式的浮點數,請查找在C++標準報頭iostreamiomanip中定義的操作以控制格式。該頁面還可以是一個良好的開端:http://en.cppreference.com/w/cpp/io/manip

編輯:另外,看着這個循環:

 do 
     { 
      cout<<"Cena: "<<cena[h]<<endl; 
      cout<<"Produkt1: "<<produkt1[b]<<endl; 
      cout<<"Produkt2: "<<produkt2[b]<<endl; 
      cout<<"H: "<<h<<endl; 
      system("PAUSE"); 
      cena[h]=produkt1[b] + produkt2[b]; 
      h=h+1; 
     }while(h!= produkti); 

看來這是第一塊的代碼寫入到cena[],但它寫入之前打印cena[h]一個新的價值。所以,第一個cout會在將其設置爲新值之前寫出cena[]中未初始化的值。

這似乎是不正確的邏輯。在計算之前,您確定要打印出價值嗎?

+0

好吧,我添加了這個來測試發生了什麼問題...... – user3029612

+0

@ user3029612:你可能想要在'cena [h] = produkt1 [b] + produkt2 [ b];那麼。順便說一下,這將在每次迭代中將'cena [h]'設置爲相同的值,因爲您正在使用固定索引'b'對「produkt1」和「produkt2」進行索引。 –

+0

沒有,沒有更好的,看看我的eddited ORG職位... – user3029612

相關問題