[英]PHP converting String to Integer and knowing when value is not Integer in String format
[英]PHP - Converting a String float to an Integer - Wrong value
為什么此代碼提供 853 而不是 854?
(int) ((float) ( "8.54") * 100);
如何將(字符串) "8.54"
轉換為(整數) 854
?
首先,閱讀浮點數學是否損壞?
8.54 恰好是可以精確寫成十進制但不能寫成二進制的數字之一,因此(float)"8.54"
實際上會創建一個非常接近但略低於 8.54的數字。
將其乘以 100 將創建一個非常接近但略低於 854的數字。 並且轉換為int
將找到下一個最小整數(例如 853.9 變為 853,而不是 854)。
我可以想到兩個解決方案:
round(8.54 * 100)
將給出一個正好是854 的數字,而不是略低於它。 所以(int)round((float)"8.54" * 100)
將給出 854 作為整數。.
從字符串中,直接轉換為int,例如(int)str_replace(".", "", "8.54"));
intval(str_replace(".", "", "8.54"))
嘗試不使用 (int)。 像這樣 => (float) ("8.54") * 100; 在這種情況下 (int) 沒有必要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.