我有一個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。我不明白爲什麼會這樣.. 謝謝你是進步
我有一個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。我不明白爲什麼會這樣.. 謝謝你是進步
因爲計算機不能正常代表浮點數。這可能是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
謝謝@Styphon它的正常工作對我來說... –
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;
}
樂施會@ahmed。我理解,但它在一些特殊情況下給出了錯誤的價值...感謝您的幫助... –
@RajatGupta檢查更新。 SRY爲 –
感謝@ahmed此代碼...但它不能正常工作了55.951 如果第三個數字是大於或等於5,然後應該是圓的,否則2位將顯示爲相同 –
感謝@Edwin在-證明我的回答 –
我創建了一個跟進的問題:http://stackoverflow.com/questions/43803587/why-tofixed-in -javascript-行爲樣說。 – Edwin
你好@Edwin感謝您創建這個問題我也想知道爲什麼toFixed()有這個weired回答 –