爲什麼是由兩個存儲的位數浮動以及雙可變一樣,不是雙應該存儲位數多於浮動位數float和double變量
#include <iostream>
using namespace std;
int main(){
double a = 3.141528579238;
float b = 3.141528579238;
cout << a << " " << b;
return 0;
}
我得到這個作爲我的輸出
3.14153 3.14153
爲什麼是由兩個存儲的位數浮動以及雙可變一樣,不是雙應該存儲位數多於浮動位數float和double變量
#include <iostream>
using namespace std;
int main(){
double a = 3.141528579238;
float b = 3.141528579238;
cout << a << " " << b;
return 0;
}
我得到這個作爲我的輸出
3.14153 3.14153
,你所面臨的問題是,因爲首先你應該知道,漂浮有4個字節,雙有8個字節,3.141528579238也許可以被存儲在這兩個,如果你想顯示更多的數字我建議首先包括: #include <iomanip>
然後您可以使用以下命令在「。」之後打印任意數量的數字。 :cout << std::setprecision(7) << myFloat;
這將顯示3.1415285。
它不是關於數字這是關於位!
float
s是32bit
和double
s是64bit
。 浮點數可以這樣表示:a*2^x
其中a < 1
和a => 0
。 a
和x
將被存儲在32- or 64-bit
內存中。
你的程序打印相同的東西的原因是因爲它只是不打印你的整個號碼。
存儲的位數與顯示的位數不同。 – aschepler
http://stackoverflow.com/questions/588004/is-floating-point-math-broken –
@OP:爲了讓你對存儲內容有所瞭解,你需要檢查調試器/內存中的數字,而不是使用輸出語句來顯示數字。 – PaulMcKenzie