我看到了很多關於如何在C++中用給定的精度顯示數字的帖子,但我想知道是否有方法顯示非循環數字,如x.0和循環由setprecision方法指定的寬度數?C++ Precision的問題
2
A
回答
3
如果你事先知道是否要打印呈現循環小數擴大數量,那麼你可以簡單地沿着線發出聲明:
if is_recurring:
print using expanded format
else
print using fixed format
我想你不知道提前。一般來說,計算機也不可能知道它。
如何測試幾個小數(如果使用雙精度約爲15)是否爲重複小數?
此外,你想如何打印它?以經典爲例:
3227/555 = 5.814414414414414
我該如何打印?喜歡這個?
5.8144
還是這樣?
5.8144
***
這似乎是一個很難解決的問題。
1
這聽起來像你真正想要的是修剪尾隨零。機器不知道一個數字是否真的是一個「循環數」,它只是一個有理數的奇特名稱,因爲浮點數學並不是基於有理數的,因此它的分母相對於數的基數是相對的。
正如亞當所說,默認輸出樣式已經忽略尾隨零。這與數學無關;它只是從字符串的末尾刪除字符。
根據標準,ios_base::fixed
和ios_base::scientific
標誌確定定性格式。如果兩者均未設置,則輸出等同於%g
格式說明符printf
。
根據man printf
,
尾隨零將被從結果的小數部分移除;只有緊跟着至少一位數字時纔會出現小數點。
若要儘管以上規則最終得到一個.0
,你將不得不做一些像打印到一個臨時字符串,搜索它一個小數點,並且在fixed
模式重試,如果沒有找到。
相關問題
- 1. C++ double precision/precision
- 2. glm :: vec3 precision C++
- 3. Marshal C++ float to C#float precision problem
- 4. Oracle Precision
- 5. assertEquals Precision
- 6. Rails - Float precision
- 7. ostream double precision
- 8. BLAS + Multiple Precision + MPI
- 9. Opencv FindCornerSubPix precision
- 10. double和precision
- 11. float precision visual basic
- 12. Matlab Importdata Precision
- 13. float or double precision
- 14. pymongo float precision
- 15. BigDecimal,precision and scale
- 16. CUDA,float precision
- 17. M4 eval precision
- 18. write.csv precision R
- 19. OpenCL read_imagef precision
- 20. xlswrite precision matlab
- 21. precision num2string matlab
- 22. Mahout Precision Recall Movielens 10M
- 23. String to double,precision lost
- 24. Precision,Recall和F-score
- 25. Android:long => SQLiteDatabase => long,precision lost
- 26. Visual Express 2010 double variable precision
- 27. C和C#interop的問題
- 28. c/objective-c問題
- 29. C++的const_cast問題
- 30. ifstream C++的問題
什麼是重複數字? – Adam
類似於26.38888887514183這樣的數字現在將從3888等開始重複,而對於1.0的情況則不然。 –
這是默認行爲。 'setprecision'設置*最大*小數位數。如果需要的話少些,那就少用了。 'std :: fixed'可以強制一定數量的小數位(如果需要,填充0)。 – Adam