0

谁能给我一些关于如何在 Visual Basic 中舍入一半的帮助?我需要0.555转换为0.55而不是0.56.

谢谢

4

4 回答 4

2

目前尚不完全清楚您要达到的目标,但对于您给出的示例,您可以:

  • 乘以 100 得到 55.5
  • 使用Math.Floor给出 55.0
  • 然后除以 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

你可以试试 math.floor,这将四舍五入http://msdn.microsoft.com/en-us/library/k7ycc7xh.aspx

于 2013-09-29T07:32:47.370 回答
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 回答