.NET Math.Floor()
과 의 차이점은 무엇입니까 Math.Truncate()
?
.NET Math.Floor()
과 의 차이점은 무엇입니까 Math.Truncate()
?
답변:
Math.Floor
반올림, Math.Ceiling
반올림 및 Math.Truncate
0으로 반올림합니다. 따라서 Math.Truncate
같다 Math.Floor
양수 대와 같은 Math.Ceiling
음수. 여기 참조 입니다.
완전성 Math.Round
을 위해 가장 가까운 정수로 반올림합니다. 숫자가 두 정수 사이의 중간에 있으면 짝수로 반올림합니다. 참고.
Pax Diablo의 답변 도 참조하십시오 . 추천!
(int)myDouble
와 다릅니 (int)Math.Truncate(myDouble)
까?
다음에 대한 MSDN 설명을 보려면 다음 링크를 따르십시오.
Math.Floor
음의 무한대로 반올림합니다.Math.Ceiling
양의 무한대로 반올림합니다.Math.Truncate
0으로 올림 또는 내림합니다.Math.Round
가장 가까운 정수 또는 지정된 소수 자릿수로 반올림합니다. 마지막 자리가 고르거나 ( " Round(2.5,MidpointRounding.ToEven)
"2가되거나) 0에서 멀어 지도록 ( " 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
의 마지막 숫자 의 속성으로 생각 하십시오 . 그건 그렇고, 당신에게 돌아 오는 데 너무 오래 걸렸습니다. 당신이 내 응답을 기다리는 동안 앉아 있지 않았기를 바랍니다 :-)
몇 가지 예 :
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
왼쪽으로
Math.ceil
sliiiide ... 오른쪽으로
Math.truncate
sliiiide ... criiiiss crooooss (바닥 / 천장 항상 0쪽으로)
Math.round
차차, 진짜 부드러운 ... (가장 가까운쪽으로 이동)
일하러 갑시다! (⌐ □ _ □)
왼쪽으로 ... 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 메소드
추신 : 수학 조심. 원하는 것은 아닐 수도 있습니다.
"표준"반올림 결과를 얻으려면 다음을 사용하십시오.
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 () 대 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 시스템 .math.floor
math.truncate()
숫자의 정수 부분을 계산합니다. MSDN 시스템 .math.truncate
Math.Floor()
IEEE 표준 754 섹션 4 를 준수하여 "음의 무한대로"를 반올림 합니다.
Math.Truncate()
"를 0에 가장 가까운 정수로 반올림합니다."
Math.Floor()
: 지정된 배정 밀도 부동 소수점 숫자 이하의 가장 큰 정수를 리턴합니다.
Math.Round()
: 가장 가까운 정수 또는 지정된 소수 자릿수로 값을 반올림합니다.
Floor()
하고 Truncate()
,하지 Floor()
와 Round()
.