値を最も近い整数に丸めるにはどうすればよいですか?
例えば:
1.1 => 1
1.5 => 2
1.9 => 2
「Math.Ceiling()」は私を助けていません。何か案は?
値を最も近い整数に丸めるにはどうすればよいですか?
例えば:
1.1 => 1
1.5 => 2
1.9 => 2
「Math.Ceiling()」は私を助けていません。何か案は?
回答:
詳細については、公式ドキュメントを参照してください。例えば:
基本的に、Math.Round
メソッドには3つのパラメーターを指定します。
サンプルコード:
var roundedA = Math.Round(1.1, 0); // Output: 1
var roundedB = Math.Round(1.5, 0, MidpointRounding.AwayFromZero); // Output: 2
var roundedC = Math.Round(1.9, 0); // Output: 2
var roundedD = Math.Round(2.5, 0); // Output: 2
var roundedE = Math.Round(2.5, 0, MidpointRounding.AwayFromZero); // Output: 3
var roundedF = Math.Round(3.49, 0, MidpointRounding.AwayFromZero); // Output: 3
あなたは必要とするMidpointRounding.AwayFromZero
あなたは0.5値は切り上げしたい場合。残念ながら、これはのデフォルトの動作ではありませんMath.Round()
。MidpointRounding.ToEven
(デフォルト)を使用する場合、値は最も近い偶数に丸められます(1.5
はに丸められますが2
、に2.5
も丸められます2
)。
away from zero
すると、-1.5
に丸められ-2
ます。
必要Math.Round
ではありませんMath.Ceiling
。Ceiling
常に「切り上げ」Round
、小数点以下の値に応じて切り上げまたは切り下げを行います。
このマニュアルと、ちょっとかわいい方法もあります:
double d1 = 1.1;
double d2 = 1.5;
double d3 = 1.9;
int i1 = (int)(d1 + 0.5);
int i2 = (int)(d2 + 0.5);
int i3 = (int)(d3 + 0.5);
任意の数に0.5を追加し、それをint(またはフロア)にキャストすると、数学的に正しく丸められます:D
Math.Round関数があり、まさに望みどおりのことを行います。
Math.Round(1.1) results with 1
Math.Round(1.8) will result with 2.... and so one.
1.5
値としてはどうですか?さらにパラメータが必要です。
私はこれを探していましたが、私の例では、4.2769などの数値を使用して、4.3としてスパンにドロップしました。まったく同じではありませんが、これが役立つ場合:
Model.Statistics.AverageReview <= it's just a double from the model
次に:
@Model.Statistics.AverageReview.ToString("n1") <=gives me 4.3
@Model.Statistics.AverageReview.ToString("n2") <=gives me 4.28
等...
使用Math.Round
:
double roundedValue = Math.Round(value, 0)
var roundedVal = Math.Round(2.5, 0);
結果が得られます:
var roundedVal = 3
Math.Round(number)
最も近い整数への丸めを使用します。
独自の丸めメソッドを記述します。何かのようなもの、
function round(x)
rx = Math.ceil(x)
if (rx - x <= .000001)
return int(rx)
else
return int(x)
end