我有時遇到一個複雜的腳本有問題(大約需要2或3次約90,000個值),生成'-0'並將其寫入數據庫。我懷疑它是一個字符串(所計算的值可能導致整數,浮點數或字符串。)*有沒有可能導致-0的PHP計算?
是否有可能導致'-0'的任何PHP計算?
* =哦,我是多麼想念有時強類型...
我有時遇到一個複雜的腳本有問題(大約需要2或3次約90,000個值),生成'-0'並將其寫入數據庫。我懷疑它是一個字符串(所計算的值可能導致整數,浮點數或字符串。)*有沒有可能導致-0的PHP計算?
是否有可能導致'-0'的任何PHP計算?
* =哦,我是多麼想念有時強類型...
將一個負數舍入到正無窮大,如ceil()
所做的那樣,可以產生-0。
echo ceil(-.7);
// -0
結果相同,例如round(-.2)
。
這兩個將解析爲真:
(-0 == 0)
(ceil(-.7) == 0)
雖然這些將解析真假,分別是:
(-0 === 0)
(ceil(-.7) === 0)
編輯:一個有趣的(實現)RFC可以讀取here 。
謝謝,我認爲罪魁禍首是圓的() - 正在被應用於我的一些價值觀的方法。 – 2009-10-15 08:14:39
由於Gurdas說,你可以有你的數據庫中的強類型。除此之外,我不知道你的問題的答案,但我知道我將如何解決這個問題。
這個問題,據我所知,是你不知道在哪些情況下,你得到'-0',順便說一句,這是一個有效的floating point representation of 0。所以你必須找到你在哪些情況下得到的。我會採取兩種途徑之一:
哇,我希望不會! – gn22 2009-10-14 06:53:04
另外,DB是否是所有變種? – gn22 2009-10-14 06:53:47
結果數字是否舍入? – Luke 2009-10-14 06:59:41