コントローラーに次のコードがあります。
private void setProgress(float value)
{
progress = (float)Math.Round(value,4);
}
しかし、値がタイトルの数字のようなもの (int に非常に近い数字) の場合、それは機能せず、進行状況は元の値を取得するだけです。
なぜこうなった?
コントローラーに次のコードがあります。
private void setProgress(float value)
{
progress = (float)Math.Round(value,4);
}
しかし、値がタイトルの数字のようなもの (int に非常に近い数字) の場合、それは機能せず、進行状況は元の値を取得するだけです。
なぜこうなった?
1 と 24 は、数値の計算方法によっては、2 進浮動小数点数を使用して正確に表されない場合があるためです。真の整数が必要な場合は、丸めてから int に変換します。
private void setProgress(float value)
{
progress = Convert.ToInt32((float)Math.Round(value,0));
}
float を intと比較する必要がある場合(定数の場合でも、その差を非常に小さな数値と比較します。
private bool AreCloseEnoughToEqual(double d1, double d2)
{
const double _EPSILON = 0.00000001;
return Math.Abs(d1-d2) < _EPSILON;
}
整数であるかのように表示する必要がある場合は、小数点以下 0 桁で表示します。
Console.WriteLine("{0:N0}",d1);