[英]Double multiplication giving rounded results
double a = 2451550;
double b = .407864;
double c= a*b;
cout<<c;
我期待結果是“999898.9892”,但獲得“999899”。 我需要實際的不結果。請建議。
默認情況下,iostreams輸出6位精度。 如果你想要更多,你必須要求它:
std::cout.precision(15);
它也可以使用Manipulator setprecision完成,如下所示。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double a = 2451550;
double b = .407864;
double c= a*b;
cout<<setprecision(15)<<c;
}
此外,使用操縱器將使代碼緊湊。
默認情況下,std :: iostream的精度將顯示要顯示的總數 ,默認精度為6.因此,由於您的數字在小數位前有六位數,因此在小數點后不會顯示任何數字。
您可以使用“固定”操縱器更改此行為。 'precision'然后更改為小數點后顯示的位數,這可能是您所期望的。
要始終獲得小數點后的四位數,您可以執行以下操作:
cout << setprecision(4) << fixed << c;
但是,請記住,即使它們為零,它也始終顯示小數點后的四位數。 沒有簡單的方法可以使用std :: iostreams將'precision'表示小數位后的最多 x位數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.