2017-01-15 185 views
0

這個程序將計算比率。正確的輸出應該是4.50492%,但是我的輸出是0%。我懷疑這是尺寸問題。但是,double的大小是8個字節,所以long long是長度。我的程序有什麼問題?謝謝。爲什麼這個輸出是0%?

#include <iostream> 

int main() 
{ 
    using namespace std; 
    //cout << "Enter the world's population: "; 
    long long world = 6898758899; 
    //cin >> world; 
    //cout << "Enter the population of US: "; 
    long long us = 310783781; 
    //cin >> us; 

    double ratio = us/world * 100; 
    char percentage = '%'; 
    cout << "The population of the US is " << ratio << percentage << " of the world population." << endl; 

    return 0; 
} 
+3

您正在潛水整數,因此它變爲0(因爲小數位被截斷)。使一個操作數加倍。 – Li357

+0

嘗試'double ratio = static_cast (us)/ world * 100;'。 – songyuanyao

+0

發生這種情況是因爲除法是在乘法之後完成的。在劃分完成時,結果已經爲零,因此零次100仍然爲零。 – dasblinkenlight

回答

1

,因爲 「我們」 和 「世界」 型長long.So 「我們/世界」 是很長很長。(長)0.0450492 == 0,

正確的拼寫是

double ratio = (double)us/(double)world * 100.0; 
+0

謝謝! @Alone –

+0

只有一個操作數需要加倍。 – Li357