我將浮點數定義爲float transparency = 0.85f;
而在下一行中,我將它傳遞給函數 - fcn_name(transparency)
- 但事實證明變量transparency
的值爲0.850000002
,當我用默認設置打印時,它是0.850000002
。對於值0.65f
,它是0.649999998
。當我打印時,我的浮點數有額外的數字
我該如何避免這個問題?我知道浮點數只是一個近似值,但是如果我定義一個只有幾位小數的浮點數,我怎樣才能確保它不被改變?
用'double'代替? –
你不行。你得到最接近浮點數的浮點數,這個浮點數是你放在源碼中的常量。你可以通過使用double而不是float來緩解這種影響。 –
使用更高精度的類型(如果您需要它!)。你甚至可以考慮做**不使用[0..1]範圍,但是[0..100]範圍**,這樣你對你管理的號碼有更好的近似。在所有計算結束時,您可以除以100。 –