ความแตกต่างระหว่างMath.Floor()
และMath.Truncate()
ใน. NET คืออะไร?
ความแตกต่างระหว่างMath.Floor()
และMath.Truncate()
ใน. NET คืออะไร?
คำตอบ:
Math.Floor
ปัดเศษลงMath.Ceiling
ปัดเศษขึ้นและMath.Truncate
ปัดเศษเข้าหาศูนย์ ดังนั้นจึงMath.Truncate
เป็นเช่นMath.Floor
สำหรับตัวเลขบวกและชอบMath.Ceiling
ตัวเลขลบ นี่คือการอ้างอิง
เพื่อความสมบูรณ์Math.Round
ปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุด หากตัวเลขอยู่กึ่งกลางระหว่างจำนวนเต็มสองจำนวนพอดีมันจะปัดเศษเป็นเลขคู่ การอ้างอิง
ดูเพิ่มเติม: คำตอบของท่าน Diablo แนะนำเป็นอย่างยิ่ง!
(int)myDouble
แตกต่างจาก(int)Math.Truncate(myDouble)
?
ไปที่ลิงก์เหล่านี้สำหรับคำอธิบาย MSDN ของ:
Math.Floor
ซึ่งปัดลงไปทางลบอนันต์Math.Ceiling
ซึ่งปัดขึ้นไปหาอนันต์บวกMath.Truncate
ซึ่งปัดขึ้นหรือลงสู่ศูนย์Math.Round
ซึ่งจะปัดเศษเป็นจำนวนเต็มที่ใกล้ที่สุดหรือจำนวนตำแหน่งทศนิยมที่ระบุ คุณสามารถระบุพฤติกรรมได้ถ้ามันมีระยะห่างเท่ากันระหว่างความเป็นไปได้สองอย่างเช่นการปัดเศษเพื่อให้ตัวเลขสุดท้ายเป็นเลขคู่ (" Round(2.5,MidpointRounding.ToEven)
" กลายเป็น 2) หรือเพื่อให้ห่างจากศูนย์ (" Round(2.5,MidpointRounding.AwayFromZero)
" กลายเป็น 3)แผนภาพและตารางต่อไปนี้อาจช่วยได้:
-3 -2 -1 0 1 2 3
+--|------+---------+----|----+--|------+----|----+-------|-+
a b c d e
a=-2.7 b=-0.5 c=0.3 d=1.5 e=2.8
====== ====== ===== ===== =====
Floor -3 -1 0 1 2
Ceiling -2 0 1 2 3
Truncate -2 0 0 1 2
Round (ToEven) -3 0 0 2 3
Round (AwayFromZero) -3 -1 0 2 3
โปรดทราบว่าRound
มีประสิทธิภาพมากกว่าที่คิดเพียงเพราะมันสามารถปัดเศษทศนิยมตามจำนวนที่กำหนดได้ ส่วนอื่น ๆ ทั้งหมดจะปัดเป็นศูนย์ทศนิยมเสมอ ตัวอย่างเช่น:
n = 3.145;
a = System.Math.Round (n, 2, MidpointRounding.ToEven); // 3.14
b = System.Math.Round (n, 2, MidpointRounding.AwayFromZero); // 3.15
ด้วยฟังก์ชั่นอื่น ๆ คุณจะต้องใช้เทคนิคการทวีคูณ / หารเพื่อให้ได้เอฟเฟกต์เดียวกัน:
c = System.Math.Truncate (n * 100) / 100; // 3.14
d = System.Math.Ceiling (n * 100) / 100; // 3.15
even
เป็นทรัพย์สินของสุดท้ายบาทในจำนวนที่โค้งมนที่ไม่ได้เป็นความหมายทั้งจำนวนจะต้องมีหลายของทั้งสอง โดยวิธีการขอโทษมันใช้เวลานานมากที่จะได้รับกลับมาให้คุณหวังว่าคุณไม่ได้เพียงแค่นั่งรอบรอการตอบสนองของฉัน :-)
Math.Floor()
ปัดเศษไปทางอนันต์ลบ
Math.Truncate
ปัดขึ้นหรือลงไปทางศูนย์
ตัวอย่างเช่น:
Math.Floor(-3.4) = -4
Math.Truncate(-3.4) = -3
ในขณะที่
Math.Floor(3.4) = 3
Math.Truncate(3.4) = 3
ตัวอย่างบางส่วน:
Round(1.5) = 2
Round(2.5) = 2
Round(1.5, MidpointRounding.AwayFromZero) = 2
Round(2.5, MidpointRounding.AwayFromZero) = 3
Round(1.55, 1) = 1.6
Round(1.65, 1) = 1.6
Round(1.55, 1, MidpointRounding.AwayFromZero) = 1.6
Round(1.65, 1, MidpointRounding.AwayFromZero) = 1.7
Truncate(2.10) = 2
Truncate(2.00) = 2
Truncate(1.90) = 1
Truncate(1.80) = 1
Math.floor
sliiiide ไปทางซ้าย ...
Math.ceil
sliiiide ไปทางขวา ...
Math.truncate
criiiiss crooooss (พื้น / เพดานเสมอไปที่ 0)
Math.round
cha cha, เรียบจริง ๆ ... (ไปด้านที่ใกล้ที่สุด)
ไปทำงานกันเถอะ! (⌐□□ _)
ไปทางซ้าย ... Math.floor
นำมันกลับไปตอนนี้คุณทุก--
คน ...-=2
ทุกคนตบมือของคุณ✋✋
วิธีการที่ต่ำที่คุณสามารถไป? ลงไปต่ำได้ไหม ไปจนถึงทางfloor
?
if (this == "wrong")
return "i don't wanna be right";
Math.truncate(x)
int(x)
นอกจากนี้ยังเป็นเช่นเดียวกับ
โดยการลบเศษส่วนบวกหรือลบคุณจะมุ่งไปที่ 0
พวกมันทำงานเทียบเท่ากับจำนวนบวก ความแตกต่างคือวิธีจัดการกับจำนวนลบ
ตัวอย่างเช่น:
Math.Floor(2.5) = 2
Math.Truncate(2.5) = 2
Math.Floor(-2.5) = -3
Math.Truncate(-2.5) = -2
ลิงค์ MSDN: - Math.Floor Method - Math.Truncate Method
ป.ล. ระวังคณิตศาสตร์เสมอมันอาจไม่ใช่สิ่งที่คุณคาดหวัง
ในการรับผลการปัดเศษ "มาตรฐาน" ให้ใช้:
float myFloat = 4.5;
Console.WriteLine( Math.Round(myFloat) ); // writes 4
Console.WriteLine( Math.Round(myFloat, 0, MidpointRounding.AwayFromZero) ) //writes 5
Console.WriteLine( myFloat.ToString("F0") ); // writes 5
ลองนี่ตัวอย่าง:
Math.Floor () vs Math.Truncate ()
Math.Floor(2.56) = 2
Math.Floor(3.22) = 3
Math.Floor(-2.56) = -3
Math.Floor(-3.26) = -4
Math.Truncate(2.56) = 2
Math.Truncate(2.00) = 2
Math.Truncate(1.20) = 1
Math.Truncate(-3.26) = -3
Math.Truncate(-3.96) = -3
นอกจากนี้Math.Round ()
Math.Round(1.6) = 2
Math.Round(-8.56) = -9
Math.Round(8.16) = 8
Math.Round(8.50) = 8
Math.Round(8.51) = 9
math.floor()
ส่งคืนจำนวนเต็มที่มากที่สุดน้อยกว่าหรือเท่ากับจำนวนที่ระบุ MSDN system.math.floor
math.truncate()
คำนวณส่วนหนึ่งของตัวเลข ระบบ MSDN ตัดทอน
Math.Floor()
ปัดเศษ "ไปทางลบอนันต์" ตามมาตรฐาน IEEE 754ตอนที่ 4
Math.Truncate()
ปัดเศษ "เป็นจำนวนเต็มที่ใกล้ที่สุดไปยังศูนย์"
Math.Floor()
: ส่งคืนจำนวนเต็มที่ใหญ่ที่สุดน้อยกว่าหรือเท่ากับจำนวนจุดลอยตัวความแม่นยำสองเท่าที่ระบุ
Math.Round()
: ปัดเศษค่าเป็นจำนวนเต็มที่ใกล้ที่สุดหรือตามจำนวนที่ระบุของตัวเลขเศษส่วน
Floor()
และTruncate()
ไม่และFloor()
Round()
Math.floor()
จะปัดเศษลงเสมอเช่น. จะคืนค่าเป็น LESSER จำนวนเต็ม ในขณะที่round()
จะส่งกลับจำนวนเต็มที่ใกล้เคียงที่สุด
Math.Floor ()
ส่งคืนจำนวนเต็มที่มากที่สุดน้อยกว่าหรือเท่ากับจำนวนที่ระบุ
Math.Truncate ()
คำนวณส่วนหนึ่งของตัวเลข
ตัดปลายทิ้งทศนิยม ****