2013-11-25 38 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

相关问题