在VB.Net中减半

时间:2013-09-29 07:28:49

标签: .net vb.net

任何人都可以给我一些关于如何在Visual Basic中减半的帮助吗? 我需要将0.555转换为0.55而不是0.56.

由于

4 个答案:

答案 0 :(得分:2)

你想要实现的目标并不完全清楚,但是你给出的例子可能是:

  • 乘以100给出55.5
  • 使用Math.Floor给出55.0
  • 然后再除以100得到答案0.55

但是,这种方法总是向下舍入。

如果你想指定如何处理中点值0.005并且总是将其向下舍入,你将不得不尝试别的东西。请查看Math.Round,尤其是MidpointRounding mode。使用'ToEven'你可以想象乘以100将数字分成小数和整数部分,使用'ToEven'围绕小数部分,然后将其添加回整数值,最后再划分。

确保您考虑如何使用正值和负值来表现。

答案 1 :(得分:1)

这应该这样做:

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

答案 2 :(得分:0)

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

答案 3 :(得分: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 );
     }
  }