Sự khác biệt giữa Math.Floor()
và Math.Truncate()
trong .NET là gì?Sự khác biệt giữa Math.Floor() và Math.Truncate()
Trả lời
Math.Floor
làm tròn xuống, Math.Ceiling
làm tròn lên và Math.Truncate
vòng về 0. Do đó, Math.Truncate
giống như Math.Floor
cho số dương và giống như Math.Ceiling
cho số âm. Đây là reference.
Để hoàn tất, Math.Round
làm tròn số nguyên gần nhất. Nếu con số chính xác là giữa hai số nguyên, thì nó sẽ quay về phía số nguyên. Reference.
Xem thêm: Pax Diablo's answer. Rat khuyen khich!
@ Chris, tôi đề nghị bạn sửa mô tả của bạn về Round, có hai cách để làm tròn (AwayFromZero và ToEven) và nó không tròn với số nguyên * gần nhất vì nó cũng có thể làm tròn phân số. – paxdiablo
Vì vậy, chỉ cần thêm một ít vào câu hỏi gốc - sự khác biệt giữa Math.Truncate và chỉ cần đúc một số thập phân hoặc gấp đôi để int là gì? nó sẽ không chỉ tròn về phía không? –
Khi nào '(int) myDouble' khác với' (int) Math.Truncate (myDouble) '? – mpen
Một số ví dụ:
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
Thực hiện theo các liên kết cho các mô tả MSDN của:
Math.Floor
, mà làm tròn xuống về phía vô cực âm.Math.Ceiling
, làm tròn về phía cực dương.Math.Truncate
, làm tròn lên hoặc xuống về 0.Math.Round
, làm tròn số nguyên gần nhất hoặc số thập phân được chỉ định. Bạn có thể xác định hành vi nếu nó chính xác bằng nhau giữa hai khả năng, chẳng hạn như làm tròn để chữ số cuối cùng thậm chí ("Round(2.5,MidpointRounding.ToEven)
" trở thành 2) hoặc để nó xa hơn 0 ("Round(2.5,MidpointRounding.AwayFromZero)
" trở thành 3).
Sơ đồ và bảng sau đây có thể giúp:
-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
Lưu ý rằng Round
là rất nhiều mạnh mẽ hơn có vẻ như, đơn giản chỉ vì nó có thể tròn đến một số cụ thể của chữ số thập phân. Tất cả những người khác luôn luôn tròn số 0. Ví dụ:
n = 3.145;
a = System.Math.Round (n, 2, MidpointRounding.ToEven); // 3.14
b = System.Math.Round (n, 2, MidpointRounding.AwayFromZero); // 3.15
Với các chức năng khác, bạn phải sử dụng nhân/chia đoạn gian trá để đạt được hiệu quả tương tự:
c = System.Math.Truncate (n * 100)/100; // 3.14
d = System.Math.Ceiling (n * 100)/100; // 3.15
Pax, tôi nghĩ rằng bạn đã có một sai lầm với: Vòng (AwayFromZero) -3 -2 1 2 3 Math.Round (-1.2, MidpointRounding.AwayFromZero) == -1 Math.Round (0.3, MidpointRounding .AwayFromZero) == 0.0 vv .. – dtroy
Cảm ơn, @dtroy, tôi chưa bao giờ có nhu cầu sử dụng chế độ đó và, trong khi tôi ghi lại nó một cách chính xác nếu văn bản, tôi hoàn toàn có các ví dụ sai. Hy vọng rằng đó là cố định ngay bây giờ. – paxdiablo
Xin lỗi để bình luận về một câu hỏi cũ nhưng tôi phải hỏi: Làm thế nào bạn có thể làm tròn "ToEven" đến hai chữ số thập phân? Chắc chắn lẻ và thậm chí chỉ áp dụng cho số nguyên? – Richiban
Math.Floor()
vòng về phía vô cực âm
Math.Truncate
vòng lên hoặc xuống về phía không.
Ví dụ:
Math.Floor(-3.4) = -4
Math.Truncate(-3.4) = -3
khi
Math.Floor(3.4) = 3
Math.Truncate(3.4) = 3
Math.Floor()
vòng "về phía vô cực tiêu cực" trong việc tuân thủ IEEE Standard 754 phần 4.
Math.Truncate()
vòng "số nguyên gần nhất đối với zero ."
Math.Floor()
: Trả về số nguyên lớn nhất nhỏ hơn hoặc bằng với quy định tăng gấp đôi độ chính xác dấu chấm động số
Math.Round()
:.. Làm tròn một giá trị số nguyên gần nhất hoặc không vượt quá số chữ số phân số
OP hỏi về sự khác biệt giữa 'Floor()' và 'Truncate()', không phải 'Tầng()' và 'Vòng()'. –
họ là những chức năng tương đương với các số dương Sự khác biệt là ở cách họ xử lý các số âm
Ví dụ:..
Math.Floor(2.5) = 2
Math.Truncate(2.5) = 2
Math.Floor(-2.5) = -3
Math.Truncate(-2.5) = -2
liên kết MSDN: - Math.Floor Method - Math.Truncate Method
T.B. Hãy coi chừng Math.Round nó có thể không được những gì bạn mong đợi.
Để có được "tiêu chuẩn" làm tròn sử dụng kết quả:
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()
Trả về số nguyên lớn nhất nhỏ hơn hoặc bằng số lượng quy định.
MSDN system.math.floor
math.truncate()
Tính phần không thể thiếu của một số.
MSDN system.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
Ngoài 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
sliiiide sang trái ...
Math.ceil
sliiiide sang bên phải ...
Math.truncate
criiiiss crooooss (sàn/ceil luôn hướng tới 0)
Math.round
cha cha, thực sự trơn tru ... (đi đến bên gần nhất)
Hãy đi làm! (⌐ □ □ _)
Bên trái ... Math.floor
Mang nó trở lại tại y'all ... --
Hai bước nhảy lần này ... -=2
Mọi người vỗ tay ✋✋
Bạn có thể đi bao xa? Bạn có thể xuống thấp không? Tất cả các cách để floor
?
if (this == "wrong")
return "i don't wanna be right";
Math.truncate(x)
cũng giống như int(x)
.
bằng cách xóa một phân số dương hoặc âm, bạn luôn hướng tới 0.
- 1. Sự khác biệt giữa $ (...) và `...`
- 2. Sự khác biệt giữa. và #
- 3. Sự khác biệt giữa $ * và $ @
- 4. Sự khác biệt giữa ". +" Và ". +?"
- 5. Sự khác biệt giữa "**/* /" và "** /"?
- 6. Sự khác biệt giữa = và: =
- 7. Sự khác biệt về sự khác biệt giữa Matplotlib giữa Agg và Cairo
- 8. Sự khác biệt giữa Html.RenderAction và Html.Action
- 9. Sự khác biệt giữa cookie và phiên?
- 10. Sự khác biệt giữa '.' và "." trong java
- 11. Sự khác biệt giữa SimpleDB và S3
- 12. C++ - Sự khác biệt giữa (*). và ->?
- 13. Sự khác biệt giữa offsetHeight và clientHeight
- 14. Sự khác biệt giữa RDLC và SSRS
- 15. Sự khác biệt giữa "\ n" và Environment.NewLine
- 16. Sự khác biệt giữa qt và PyQt4
- 17. Sự khác biệt giữa AForge và OpenCV
- 18. Sự khác biệt giữa toFixed() và toPrecision()?
- 19. sự khác biệt giữa cacao và cocoatouch
- 20. Sự khác biệt giữa smtpClient.send() và smtpClient.SendAsync()?
- 21. Sự khác biệt giữa window.location.host và window.location.hostname
- 22. Sự khác biệt giữa DTLS và TLS
- 23. Sự khác biệt giữa Mealy và Moore
- 24. sự khác biệt giữa createRfcommSocketToServiceRecord và createRfcommSocket
- 25. Sự khác biệt giữa Arrays.sort() và Arrays.parallelSort()
- 26. sự khác biệt giữa orm và pdo
- 27. Sự khác biệt giữa nproc và ulimit?
- 28. Sự khác biệt giữa apc_add và apc_store?
- 29. Sự khác biệt giữa mb_substr và substr
- 30. Sự khác biệt giữa p4diff và p4diff2
ví dụ: Math.Floor (5.4) = 5 Math.Truncate (5.4) = 5 – subramani
bạn thực sự cần điều này sau 10 năm lẻ? lol –
lý do tại sao sau 10 năm là có một tiền thưởng? có rất nhiều câu trả lời rồi. có cái gì tôi đang thiếu ở đây? – Puddle