Visual Basic で半分を切り捨てる方法について誰か助けてもらえますか? 私は0.555
に変換する必要があり0.55
、NOT0.56.
ありがとう
あなたが達成しようとしていることは完全には明らかではありませんが、あなたが与えた例では次のことができます:
ただし、このアプローチは常に切り捨てられます。
中間値 0.005 を処理する方法を指定し、常にこれを切り捨てたい場合は、別の方法を試す必要があります。Math.Roundと特にMidpointRounding modeを見てください。'ToEven' を使用すると、おそらく 100 を掛けて数値を小数部分と整数部分に分割し、'ToEven' を使用して小数部分を丸め、それを整数値に加算し、最後に再度除算することができます。
正の値と負の値の両方がどのように動作する必要があるかを必ず考えてください。
これはそれを行う必要があります:
Dim res = Math.Truncate(0.555 * 100) / 100
正気ではありません(おそらく、エッジケースに関するいくつかのテストが必要です):
また、おそらく「。」をチェックするのは良くありません。
public double FunkyRound( double test, int places )
{
string valueString = test.ToString();
// if the string has a decimal and ends with 5, just remove the last 5 and return
if ( valueString.EndsWith( "5" ) && valueString.Contains(".") )
{
valueString = valueString.Substring( 0, valueString.Length - 1 ); // trim the last "5"
return double.Parse( valueString );
}
else
{
// just do regular rounding
return Math.Round( test, places );
}
}
math.floor を試すことができます。これは切り捨てられますhttp://msdn.microsoft.com/en-us/library/k7ycc7xh.aspx