Javascript Math Object Methods - เชิงลบเป็นศูนย์


90

ใน Javascript ฉันไม่พบวิธีการตั้งค่าเนกาทีฟเป็นศูนย์?

-90 กลายเป็น 0
-45 กลายเป็น 0
0 กลายเป็น 0
90 กลายเป็น 90

มีอะไรอย่างนั้นหรือ? ฉันได้ปัดเศษตัวเลข

คำตอบ:


184

เพียงทำสิ่งที่ชอบ

value = value < 0 ? 0 : value;

หรือ

if (value < 0) value = 0;

หรือ

value = Math.max(0, value);

2
JSPerf ด่วนแสดงค่า = ค่า <0? 0: ค่า; อยู่ด้านบนjsperf.com/negatives-to-zero
Skeep

23
ฉันชอบMath.maxอันนี้มากที่สุดเพราะต้องใช้การอ้างอิงvalueเพียงครั้งเดียว
Matt Fletcher

61

Math.max()ฉันคิดว่าคุณสามารถใช้

var num = 90;
num = Math.max(0,num); // 90

var num = -90;
num = Math.max(0,num); // 0

3
อันนี้น่าจะเป็นคำตอบที่ยอมรับได้ในความคิดของฉัน แค่บอกว่า ... :)
ksugiarto

2
สิ่งหนึ่งที่ต้องเก็บไว้ในใจคือทั้งสองMath.max(0, NaN)และMath.max(0, undefined)ผลตอบแทนNaNดังนั้นคุณอาจต้องการที่จะทำสิ่งที่ตามเส้นเหล่านี้:Math.max(0, num) || 0
jwerre

8

หากคุณต้องการฉลาด:

num = (num + Math.abs(num)) / 2;

อย่างไรก็ตามMath.maxหรือตัวดำเนินการที่มีเงื่อนไขจะเข้าใจได้มากขึ้น
นอกจากนี้ยังมีปัญหาด้านความแม่นยำสำหรับตัวเลขจำนวนมาก


4
Math.positive = function(num) {
  return Math.max(0, num);
}

// or 

Math.positive = function(num) {
  return num < 0 ? 0 : num;
}

ศูนย์ไม่เป็นบวกหรือลบฟังก์ชันของคุณควรเปลี่ยนชื่อตามนั้น
Killy



-1

ฉันไม่เชื่อว่าฟังก์ชันดังกล่าวมีอยู่ในวัตถุคณิตศาสตร์ดั้งเดิม คุณควรเขียนสคริปต์เพื่อเติมฟังก์ชันหากคุณจำเป็นต้องใช้

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