2017-05-05 23 views
0

我有一個PHP的功能,並具有

phpans = round(53.955,2)

和javascript函數

var num = 53.955; 
 
var jsans = num.toFixed(2); 
 
console.log(jsans);

兩個jsans和phpans是給不同$ phpans = 53.96 ans jsans = 53.95。我不明白爲什麼會這樣.. 謝謝你是進步

+0

感謝@Edwin在-證明我的回答 –

+0

我創建了一個跟進的問題:http://stackoverflow.com/questions/43803587/why-tofixed-in -javascript-行爲樣說。 – Edwin

+0

你好@Edwin感謝您創建這個問題我也想知道爲什麼toFixed()有這個weired回答 –

回答

3

因爲計算機不能正常代表浮點數。這可能是53.95400000000009或類似的東西。處理這個問題的方法是乘以100,然後除以100,因此計算機只處理整數。

var start = 53.955, 
 
     res1, 
 
     res2; 
 
    
 
    res1 = start.toFixed(2); 
 
    res2 = (start * 100).toFixed(0)/100; 
 
    console.log(res1, res2);

//Outputs 
"53.95" 
53.96 
+0

謝謝@Styphon它的正常工作對我來說... –

0

JAVASCRIPT toFixed: 的toFixed()方法的數轉換成一個字符串,保持小數指定數量。

php round: 返回val到指定精度(小數點後的位數)的四捨五入值。精度也可以是負數或零(默認)。

結論tofixed不能正常工作,如PHP輪。 精度指定舍入爲的小數位數。

JavaScript函數:

function round_up (val, precision) { 
    power = Math.pow (10, precision); 
    poweredVal = Math.ceil (val * power); 
    result = poweredVal/power; 

    return result; 
} 
+0

樂施會@ahmed。我理解,但它在一些特殊情況下給出了錯誤的價值...感謝您的幫助... –

+0

@RajatGupta檢查更新。 SRY爲 –

+0

感謝@ahmed此代碼...但它不能正常工作了55.951 如果第三個數字是大於或等於5,然後應該是圓的,否則2位將顯示爲相同 –