[英]Can't round number to two decimal places using floorf
我在這里找到這個公式:
podrucje[i][j] = floorf(podrucje[i][j] * 100 + 0.5)/100;
其中podrucje[][]
是浮點矩陣。 floorf
返回正確的值( desired * 100
),但問題出在/100
。 例如,如果我有49.599998
, floorf
返回4960.000
並通過划分后100
結果又是49.599998
。
問題出在哪兒?
我知道我可以在打印時對其進行四舍五入,但是我將在Excel中使用此矩陣並將其轉換為范圍,因此我不會影響表示形式。
大多數十進制數字不能完全表示為浮點數。
您可能需要將它們存儲為整數,或者在轉換為人類可見的內容時進行四舍五入(即打印出數字)。
如果要將數字用於進一步的計算,並且需要先將其四舍五入,請使用其他表示形式。
這不是以10為底的浮點算術表示法的基本問題! 您可以打印以10為基數的數字,但是四舍五入到小數點后兩位。
跨邊界安全導出數字的標准安全方法是通過純文本ascii而不是二進制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.