違いは何であるMath.Floor()
とMath.Truncate()
.NETのは?
違いは何であるMath.Floor()
とMath.Truncate()
.NETのは?
回答:
Math.Floor
切り捨て、Math.Ceiling
切り上げ、Math.Truncate
ゼロに向かって丸めます。このように、Math.Truncate
のようなものであるMath.Floor
正の数のため、などMath.Ceiling
負の数のため。ここに参照があります。
完全をMath.Round
期すために、最も近い整数に丸めます。数値が2つの整数のちょうど中間にある場合は、偶数に向かって丸めます。参照。
参照:パックスディアブロの答えを。強くお勧めします!
(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になる)など、2つの可能性の間で正確に等距離である場合の動作を指定できます。次の図と表が役立つ場合があります。
-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
最後の桁のプロパティとして考えます。数値全体が2の倍数でなければならないという意味ではありません。ちなみに、ご返答に時間がかかりすぎて申し訳ありません。私の返事を待っているだけではなかったと思います:-)
いくつかの例:
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
スライド... 右に
Math.truncate
スライド... criiiiss crooooss(床/天井は常に0の方向)
Math.round
cha cha、real smooth ...(goest side)
仕事に行こう!(⌐□_□)
左に... Math.floor
今すぐ元に戻して... --
今回は2ホップ...-=2
みんな拍手lap
どれだけ低くできますか?あなたは低く下げることができますか?に至るまで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方法 - Math.Truncate方法
PS Math.Roundにご注意ください。期待したものとは異なる場合があります。
「標準」の丸め結果を取得するには、以下を使用します。
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 system.math.floor
math.truncate()
数値の整数部分を計算します。MSDN system.math.truncate
Math.Floor()
IEEE規格754セクション4 に準拠して、「負の無限大に向かって」丸めます。
Math.Truncate()
「ゼロに向かって最も近い整数に丸めます。」