JavaScript hiển thị nổi đến 2 chữ số thập phân


316

Tôi muốn hiển thị một số đến 2 chữ số thập phân.

Tôi nghĩ rằng tôi có thể sử dụng toPrecision(2)trong JavaScript.

Tuy nhiên, nếu số lượng là 0.05, tôi nhận được 0.0500. Tôi muốn nó vẫn như cũ.

Xem nó trên JSbin .

Cách tốt nhất để làm việc này là gì?

Tôi có thể nghĩ về việc mã hóa một vài giải pháp, nhưng tôi tưởng tượng (tôi hy vọng) một cái gì đó như thế này được xây dựng trong?

Câu trả lời:


560
float_num.toFixed(2);

Lưu ý:toFixed() sẽ làm tròn hoặc đệm bằng số không nếu cần để đáp ứng độ dài đã chỉ định.


61
Nhưng nó trả về chuỗi, không nổi!
Anwar

38
Tác giả câu hỏi muốn "hiển thị" nó, vì vậy một chuỗi là hoàn hảo
Barshe Marois

7
Và bạn luôn có thể sử dụng parseFloat (float_num.toFixed (2)) để chuyển đổi chuỗi trở lại float trong khi chỉ giữ hai số thập phân.
Hankrecords

3
@anwar bạn không thể làm tròn một cách đáng tin cậy (có thể nói bạn hoàn toàn có thể làm tròn một số float) - bạn sẽ nhận được một cái gì đó như 0,0500 hoặc thậm chí 0,0500000000001. Xem floating-point-gui.de
JMC

2
@Hankrecords những gì bạn nói là không đúng sự thật. Nếu tôi có '43 .01 'và tôi phân tích cú pháp thì tôi nhận được 43,01 NHƯNG nếu tôi có '43 .10' tôi sẽ nhận được 43.1: D không như tôi muốn.
Lucian Tarna

50

Bạn có thể làm điều đó với toFixedchức năng, nhưng nó có lỗi trong IE . Nếu bạn muốn một giải pháp đáng tin cậy, hãy xem câu trả lời của tôi ở đây .


26
Công nghệ nên được phát triển thay vì thích ứng với IE ... (btw. Trong nút js float_num.toFixed(2);hoạt động tốt)
fider


14

Không biết làm thế nào tôi có được câu hỏi này, nhưng ngay cả khi đã được hỏi nhiều năm, tôi vẫn muốn thêm một phương pháp nhanh chóng và đơn giản mà tôi làm theo và nó không bao giờ làm tôi thất vọng:

var num = response_from_a_function_or_something();

var fixedNum = parseFloat(num).toFixed( 2 );

1
Tại sao parseFloat()có? Nó chỉ nên được sử dụng nếu số đến từ một chuỗi.
alex

3
Trong một số trường hợp khi tôi nhận được một số giá trị thuộc tính "data-" với jquery từ một phần tử, nếu tôi chỉ sử dụng toFixed thì nó sẽ tạo ra lỗi. parseFloat sửa nó.
panos

2
Vâng, đó là những gì tôi muốn nói ở trên nếu nó đến từ một chuỗi . Nhưng sử dụng nó luôn luôn là lời khuyên tồi.
alex


8

number.parseFloat(2) hoạt động nhưng nó trả về một chuỗi.

Nếu bạn muốn giữ nó dưới dạng số, bạn có thể sử dụng:

Math.round(number * 100) / 100


4

Bạn có thể thử trộn Number()toFixed().

Có số mục tiêu của bạn được chuyển đổi thành một chuỗi đẹp với các chữ số X sau đó chuyển đổi chuỗi được tạo thành một số.

Number( (myVar).toFixed(2) )


Xem ví dụ dưới đây:

var myNumber = 5.01;
var multiplier = 5;
$('#actionButton').on('click', function() {
  $('#message').text( myNumber * multiplier );
});

$('#actionButton2').on('click', function() {
  $('#message').text( Number( (myNumber * multiplier).toFixed(2) ) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button id="actionButton">Weird numbers</button>
<button id="actionButton2">Nice numbers</button>

<div id="message"></div>


Cảm ơn bạn đã tham khảo tốt đẹp.
Arman H

1

Các toFixed()phương pháp định dạng một số sử dụng ký hiệu điểm cố định.

và đây là cú pháp

numObj.toFixed([digits])

đối số chữ số là tùy chọn và theo mặc định là 0. Và kiểu trả về là chuỗi không phải là số. Nhưng bạn có thể chuyển đổi nó thành số bằng cách sử dụng

numObj.toFixed([digits]) * 1

Nó cũng có thể ném ngoại lệ như TypeError,RangeError

Dưới đây là chi tiết đầy đủ và khả năng tương thích trong trình duyệt.



-1

Tôi đã thực hiện chức năng này. Nó hoạt động tốt nhưng trả về chuỗi.

function show_float_val(val,upto = 2){
  var val = parseFloat(val);
  return val.toFixed(upto);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.