簡體   English   中英

在VB.Net中向下舍入

[英]Round Half Down in VB.Net

誰能給我一些有關如何在Visual Basic中進行四舍五入的幫助? 我需要將0.555轉換為0.55而不是0.56.

謝謝

尚不清楚您要實現的目標,但是對於您給出的示例,您可以:

  • 乘以100得到55.5
  • 使用Math.Floor給予55.0
  • 然后再除以100得到0.55

但是,這種方法總是四舍五入。

如果要指定如何處理中點值0.005並始終將其四舍五入,則必須嘗試其他操作。 看一下Math.Round ,尤其是MidpointRounding模式 可以想象使用“ ToEven”將數字乘以100,將數字分為小數和整數部分,使用“ ToEven”將小數部分四舍五入,然后將其加回到整數值,最后再次除法。

確保您考慮如何需要正值和負值來表現。

應該這樣做:

Dim res = Math.Truncate(0.555 * 100) / 100

您可以嘗試使用math.floor,這將舍入http://msdn.microsoft.com/en-us/library/k7ycc7xh.aspx

只是瘋了(可能需要對邊緣情況進行一些測試):

另外,檢查“”可能不是很好。

http://msdn.microsoft.com/zh-cn/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 );
     }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM