是否有設置數字小數的直接函數。例如我得到3.14341
和我的參數是2
,所以我得到3.14
。有一個功能setprecision
但它只打印結果。此外,我做了這樣一個算法:根據參數設置十進制數
std::string fixPrecision(std::string const& value, int digits)
{
std::string num = value;
float temp = std::stof(num);
float fractpart, intpart;
fractpart = modf(temp, &intpart);
int a = (int)(fractpart * pow(10,digits));
double last = intpart + a*(pow(0.1 , digits));
return std::to_string(last);
}
它運作良好。我得到我想要的,但我必須將其轉換爲字符串,所以結果是123.120000
而不是123.12
。
我可以確定在這裏使用一些幫助。提前致謝。
編輯:這不是一個重複的問題,因爲我的功能需要採取整數和字符串格式返回數字。再次感謝。
你爲什麼要在內部舍入數字。通常情況下,只有在顯示時才需要將其舍入。通常不需要擺脫精度。如果您正在使用貨幣類型,那麼您應該使用整數/固定精度庫。 – NathanOliver
這是我在公司的任務,數字應該用字符串發送,謝謝你的回答。 –
這可以通過'std :: stringstream'和操縱符來實現,比如'std :: fixed'和'std :: setprecision'。但是,您可能需要考慮直接操縱字符串。使用中間「浮動」可能會損害您的精確度。 –