我想將偶爾的小數值存儲在我的MySQL數據庫中,並將它們顯示在我的PHP應用程序中。讓我解釋一下,偶爾的十進制值是什麼意思。這些數字在大多數時間都是整數。例如,160或170等。但有時我需要保存98.6的值。PHP和MySQL中用於存儲偶爾小數值的浮點精度問題
首先我在數據庫中使用了DECIMAL(4,1)
數據類型,我發現我總是得到這樣的數字:160.0,170.0和98.6等。所以,我將它改爲FLOAT
。在我的本地環境中,我看到在PHP應用程序和phpMyAdmin上的數字爲160,170,98.6等。但在我的生產環境中,我在phpMyAdmin上看到了諸如160,170,98.6等數字。但在PHP應用程序中,我看到的數字如160,170,98.599998474121等。
現在我需要決定是否切換回decimal
或繼續使用float
。無論哪種方式,我需要找到一個解決方案,將數字轉換爲這樣的格式:160,170和98.6等。
您認爲哪種方式更適合此目的:decimal
或float
?如果數字的小數部分爲零(當使用decimal
時),將數字轉換爲整數的最佳方法是什麼?將98.599998474121等浮點值轉換爲98.6的最佳方法是什麼?
轉換數字爲整數,如果數的小數部分是零:
<?php
if (fmod($number, 1) == 0) {
$number = intval($number)
}
有沒有什麼更好的辦法?
在保存使用時,在mysql和PHP中使用float數據類型:'$ foo =「105」; echo number_format((float)$ foo,2,'。',''); //輸出 - > 105.00' –
FLOAT(1)似乎是要走的路,對嗎? – Strawberry
@Strawberry,你的意思是FLOAT(1)作爲一個鏈接? PHP或MySQL相關? 「互聯網搜索」並不具體。我誤解你的觀點 - 只是困惑。 –