JavaScript แสดงทศนิยมเป็นทศนิยม 2 ตำแหน่ง


315

ฉันต้องการที่จะแสดงจำนวนทศนิยม 2 ตำแหน่ง

ฉันคิดว่าฉันสามารถใช้toPrecision(2)ใน JavaScript

แต่ถ้าตัวเลขคือฉันได้รับ0.05 0.0500ฉันอยากให้มันคงเดิม

เห็นมันบนJSbin

วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?

ฉันสามารถนึกถึงการแก้ปัญหาบางอย่างได้ แต่ฉันคิดว่าฉันหวังว่าบางสิ่งเช่นนี้จะถูกสร้างขึ้นมา?

คำตอบ:


559
float_num.toFixed(2);

หมายเหตุ:toFixed()จะปัดเศษหรือปัดด้วยศูนย์ถ้าจำเป็นเพื่อให้ตรงกับความยาวที่ระบุ


61
แต่มันจะคืนค่าสตริงไม่ใช่ลอย!
Anwar

38
ผู้เขียนคำถามต้องการที่จะ "แสดง" มันดังนั้นสตริงที่สมบูรณ์แบบ
Christophe Marois

7
และคุณสามารถใช้ parseFloat (float_num.toFixed (2)) ในการแปลงสตริงกลับไปลอยในขณะที่รักษาทศนิยมเพียงสอง
Hankrecords

3
@anwar คุณไม่สามารถปัดเศษได้อย่างน่าเชื่อถือ (คุณสามารถปัดเศษได้เลย) - คุณจะได้อะไรเช่น 0.0500 หรือแม้แต่ 0.0500000000001 ดูfloating-point-gui.de
jmc

2
@Hankrecords สิ่งที่คุณพูดไม่เป็นความจริง ถ้าฉันมี '43 .01 'และฉันแยกส่วนแล้วฉันจะได้รับ 43.01 แต่ถ้าฉันมี '43 .10' ฉันจะได้รับ 43.1: D ไม่ใช่สิ่งที่ฉันต้องการ
Lucian Tarna

50

คุณสามารถทำมันด้วยtoFixedฟังก์ชั่น แต่มันก็เป็นรถใน IE หากคุณต้องการโซลูชั่นที่เชื่อถือได้มองไปที่คำตอบของฉันที่นี่


26
เทคโนโลยีควรได้รับการพัฒนามากกว่าปรับให้เข้ากับ IE ... (btw. ในโหนด js float_num.toFixed(2);ทำงานได้ดี)
fider


14

ไม่ทราบว่าฉันมาถึงคำถามนี้ได้อย่างไรแม้ว่าจะเป็นเวลาหลายปีแล้วที่มีการถามฉันต้องการเพิ่มวิธีที่ง่ายและรวดเร็วที่ฉันติดตามและไม่เคยทำให้ฉันผิดหวังเลย:

var num = response_from_a_function_or_something();

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

1
ทำไมถึงparseFloat()มี มันควรจะใช้เฉพาะถ้าจำนวนมาจากสตริง
alex

3
ในบางโอกาสเมื่อฉันได้รับค่าคุณลักษณะ "data-" พร้อม jquery จากองค์ประกอบถ้าฉันใช้เฉพาะ toFixed จะทำให้เกิดข้อผิดพลาด parseFloat แก้ไขมัน
panos

2
ใช่ว่าเป็นสิ่งที่ฉันหมายถึงข้างต้นถ้ามันมาจากสตริง แต่การใช้มันเป็นคำแนะนำที่ไม่ดีเสมอ
alex


8

number.parseFloat(2) ใช้งานได้ แต่มันจะคืนค่าสตริง

หากคุณต้องการเก็บไว้เป็นประเภทตัวเลขคุณสามารถใช้:

Math.round(number * 100) / 100


4

คุณอาจจะลองผสมและNumber()toFixed()

แปลงหมายเลขเป้าหมายของคุณเป็นสตริงที่ดีด้วยตัวเลข X จากนั้นแปลงสตริงที่จัดรูปแบบเป็นตัวเลข

Number( (myVar).toFixed(2) )


ดูตัวอย่างด้านล่าง:

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>


ขอบคุณสำหรับการอ้างอิงที่ดี
Arman H

1

toFixed()วิธีการรูปแบบจำนวนโดยใช้จุดคงที่สัญกรณ์

และนี่คือไวยากรณ์

numObj.toFixed([digits])

อากิวเมนต์อาสนะเป็นตัวเลือกและโดยค่าเริ่มต้นคือ 0 และชนิดที่ส่งคืนคือสตริงที่ไม่ใช่ตัวเลข แต่คุณสามารถแปลงเป็นตัวเลขโดยใช้

numObj.toFixed([digits]) * 1

นอกจากนี้ยังสามารถโยนข้อยกเว้นชอบTypeError,RangeError

นี่คือรายละเอียดทั้งหมดและความเข้ากันได้ในเบราว์เซอร์



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.