簡體   English   中英

用JavaScript舍入十進制數

[英]Round Decimal Numbers in Javascript

我想在javascript中實現以下舍入十進制數字:

Before  | After
10.05   | 10.05  
10.04   | 10.00
10.02   | 10.00
10.07   | 10.10

當我對google和stackoverflow進行研究時,我能夠做到這一點:

number = Math.round(number* 20) / 20;
number = parseFloat(number).toFixed(2);

但結果將是:

Before  | After
10.05   | 10.05  
10.04   | 10.00
10.07   | 10.05 // supposed to be 10.10 if decimal is > 0.5

我可以知道如何實現嗎?

將數字乘以10並四舍五入:

 
 
 
  
  number = Math.round(number * 10) / 10; number.toFixed(2);
 
  

或一行:

 
 
 
  
  number = (Math.round(number * 10) / 10).toFixed(2);
 
  

以下代碼片段顯示了這一操作:

 
   
   
    
    var numbers = [10.05, 10.04, 10.02, 10.07]; for (var i = 0; i < numbers.length; i++) { console.log(numbers[i] + ' -> ' + (Math.round(numbers[i] * 10) / 10).toFixed(2)); }
   
    

編輯:保留* .05可以通過if語句完成,如下所示:

 number = number * 10; number = number % 0.5 === 0 ? number : Math.round(number); number = number / 10; number.toFixed(2); 

 var numbers = [10.05, 10.04, 10.02, 10.07]; for (var i = 0; i < numbers.length; i++) { var number = numbers[i] * 10; number = number % 0.5 === 0 ? number : Math.round(number); number = number / 10; console.log(numbers[i] + ' -> ' + number.toFixed(2)); } 

說明:

什么是number = number % 0.5 === 0 ? number : Math.round(number); number = number % 0.5 === 0 ? number : Math.round(number); 做?

我將其分解。 上面的代碼使用三元表達式number賦值。 (三元表達式的形式為condition ? value_if_true : value_if_false;

在這種情況下,條件為number % 0.5 === 0 這將使用余數運算符( %來查看數字是否可被0.5整除。 (該剩余number / 0.50 ,如果數字是整除0.5 。)

因此,完整的三元可以翻譯為:

如果數字可被0.5整除,則取number ,否則取Math.round(number) 然后,將采用的值分配回number

 console.log(Math.ceil(10.07 * 20) / 20); 

當然,請記住10.04向下舍入為10.1 ,您對此無能為力。

var number = Math.round(10.05*10)/10; //this basically does the trick
var number = number.toFixed(2);
console.log(number);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM