0

Visual Basic で半分を切り捨てる方法について誰か助けてもらえますか? 私は0.555に変換する必要があり0.55、NOT0.56.

ありがとう

4

4 に答える 4

2

あなたが達成しようとしていることは完全には明らかではありませんが、あなたが与えた例では次のことができます:

  • 100 を掛けると 55.5 になります。
  • 55.0 を与えるMath.Floorを使用する
  • それから 100 で割ると答えは 0.55 になります。

ただし、このアプローチは常に切り捨てられます。

中間値 0.005 を処理する方法を指定し、常にこれを切り捨てたい場合は、別の方法を試す必要があります。Math.Roundと特にMidpointRounding modeを見てください。'ToEven' を使用すると、おそらく 100 を掛けて数値を小数部分と整数部分に分割し、'ToEven' を使用して小数部分を丸め、それを整数値に加算し、最後に再度除算することができます。

正の値と負の値の両方がどのように動作する必要があるかを必ず考えてください。

于 2013-09-29T07:37:43.540 に答える
1

これはそれを行う必要があります:

Dim res = Math.Truncate(0.555 * 100) / 100
于 2013-09-29T07:46:12.497 に答える
0

正気ではありません(おそらく、エッジケースに関するいくつかのテストが必要です):

また、おそらく「。」をチェックするのは良くありません。

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numberdecimalseparator.aspx

  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 );
     }
  }
于 2013-09-29T11:18:14.810 に答える
0

math.floor を試すことができます。これは切り捨てられますhttp://msdn.microsoft.com/en-us/library/k7ycc7xh.aspx

于 2013-09-29T07:32:47.370 に答える