簡體   English   中英

雙倍乘法給出圓形結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM