我需要调用哪些VB.NET舍入方法才能获得最佳结果?

我需要调用哪些VB.NET舍入方法才能获得最佳结果?,vb.net,Vb.net,我有4个舍入选项:无、标准、向上、向下 如果他们选择None,数字是108.7879,我只想显示108.78,不进行四舍五入。我知道我可能会用数学。Ceil代表上升和下降。地板代表下降,但我不确定用什么来表示“无”或“标准” 如果他们选择标准: 106.78应该是107 106.49应四舍五入至106 如果他们选择向上: 106.49应四舍五入至107 106.52应四舍五入至107 如果他们选择向下: 106.78应该四舍五入到106 106.49应该四舍五入到106只使用只使用我不明白这个问

我有4个舍入选项:无、标准、向上、向下

如果他们选择None,数字是108.7879,我只想显示108.78,不进行四舍五入。我知道我可能会用数学。Ceil代表上升和下降。地板代表下降,但我不确定用什么来表示“无”或“标准”

如果他们选择标准:

106.78应该是107

106.49应四舍五入至106

如果他们选择向上:

106.49应四舍五入至107

106.52应四舍五入至107

如果他们选择向下:

106.78应该四舍五入到106


106.49应该四舍五入到106

只使用

只使用

我不明白这个问题。你在帖子里回答了自己的问题。对于“无”,只需按原样显示结果,不需要对小数进行任何舍入或截断

公共枚举循环选项 没有一个 标准 向上的 向下 结束枚举

'可能有一个全局变量,您只需设置使用一次的选项。如果不需要全局变量,则将该选项作为参数发送给该方法。 私有roundOption作为roundOption

公共函数舍入(ByVal值为Double)为Double 选择案例选项 案例四舍五入选项。无 返回值 案例综述 返回数学上限(值) 案例四舍五入,向下 返回数学下限(值) 案例圆形选项。标准 返回数学截断(值*100)/100 结束选择
结束函数我不明白这个问题。你在帖子里回答了自己的问题。对于“无”,只需按原样显示结果,不需要对小数进行任何舍入或截断

公共枚举循环选项 没有一个 标准 向上的 向下 结束枚举

'可能有一个全局变量,您只需设置使用一次的选项。如果不需要全局变量,则将该选项作为参数发送给该方法。 私有roundOption作为roundOption

公共函数舍入(ByVal值为Double)为Double 选择案例选项 案例四舍五入选项。无 返回值 案例综述 返回数学上限(值) 案例四舍五入,向下 返回数学下限(值) 案例圆形选项。标准 返回数学截断(值*100)/100 结束选择 结束函数有一种标准四舍五入的方法。对于“无”,你不应该叫任何东西。你自己回答的其他问题(Math.Ceili和Math.Floor)

编辑:有一个重载来指定位数

有一种标准舍入方法。对于“无”,你不应该叫任何东西。你自己回答的其他问题(Math.Ceili和Math.Floor)


编辑:有一个重载来指定位数

这些是您想要的:

  • 标准:
    Math.Round
  • 向下:
    Math.Floor
  • 向上:
    数学上限
  • 无:
    Math.Round(n,2)
    第二个参数指定要舍入的位数
所以这个代码:

imports Microsoft.VisualBasic
imports System

public module MyModule
    Sub Main()
        'If they choose Standard:
        Console.WriteLine(Math.Round(106.78) & " should round up to 107")
        Console.WriteLine(Math.Round(106.49 ) & " should round down to 106")

        'If they choose Up:
        Console.WriteLine(Math.Ceiling(106.49) & "  should round up to 107")
        Console.WriteLine(Math.Ceiling(106.52) & "  should round up to 107")

        'If they choose Down:
        Console.WriteLine(Math.Floor(106.78) & "  should round down to 106")    
        Console.WriteLine(Math.Floor(106.49) & "  should round down to 106")

        'If they choose None:
        Console.WriteLine(Math.Round(106.78455, 2) & "  should round down to 106.78")   
        Console.WriteLine(Math.Round(106.49456, 2) & "  should round down to 106.49")

        Console.ReadKey()
    End Sub
end module
将产生以下输出:

107 should round up to 107
106 should round down to 106
107  should round up to 107
107  should round up to 107
106  should round down to 106
106  should round down to 106
106.78  should round down to 106.78
106.49  should round down to 106.49

这些是您想要的:

  • 标准:
    Math.Round
  • 向下:
    Math.Floor
  • 向上:
    数学上限
  • 无:
    Math.Round(n,2)
    第二个参数指定要舍入的位数
所以这个代码:

imports Microsoft.VisualBasic
imports System

public module MyModule
    Sub Main()
        'If they choose Standard:
        Console.WriteLine(Math.Round(106.78) & " should round up to 107")
        Console.WriteLine(Math.Round(106.49 ) & " should round down to 106")

        'If they choose Up:
        Console.WriteLine(Math.Ceiling(106.49) & "  should round up to 107")
        Console.WriteLine(Math.Ceiling(106.52) & "  should round up to 107")

        'If they choose Down:
        Console.WriteLine(Math.Floor(106.78) & "  should round down to 106")    
        Console.WriteLine(Math.Floor(106.49) & "  should round down to 106")

        'If they choose None:
        Console.WriteLine(Math.Round(106.78455, 2) & "  should round down to 106.78")   
        Console.WriteLine(Math.Round(106.49456, 2) & "  should round down to 106.49")

        Console.ReadKey()
    End Sub
end module
将产生以下输出:

107 should round up to 107
106 should round down to 106
107  should round up to 107
107  should round up to 107
106  should round down to 106
106  should round down to 106
106.78  should round down to 106.78
106.49  should round down to 106.49


您需要询问您软件的客户/最终用户,而不是我们。我不是想表现得可爱。利益相关者希望看到什么?@Paul Sasik,我相信你很困惑,这正是客户想要的,我只想知道调用正确的vb.net方法以获得正确的结果。在这种情况下,我认为你只是缺少数学知识。四舍五入是你的“标准”四舍五入。没有四舍五入没有。。。按原样显示数值。你是认真的吗?您不确定要调用什么方法进行取整?你有没有看过你的文档?具体地说,对于“无”,我只想返回106.7879到106.78,所以技术上不是这样,而是只有两位小数。您需要询问您软件的客户/最终用户,而不是我们。我不是想表现得可爱。利益相关者希望看到什么?@Paul Sasik,我相信你很困惑,这正是客户想要的,我只想知道调用正确的vb.net方法以获得正确的结果。在这种情况下,我认为你只是缺少数学知识。四舍五入是你的“标准”四舍五入。没有四舍五入没有。。。按原样显示数值。你是认真的吗?您不确定要调用什么方法进行取整?你有没有看过你的文档?具体地说,对于“无”,我只想返回106.7879到106.78,所以技术上不是这样,而是只有两个小数位。。。。这两个选项都不满足。Math.Truncate返回所有整数部分。我希望106.7879返回106.78,但不要将值四舍五入到106.79例如,它将向下四舍五入到正值,向上四舍五入到负值。。。。这两个选项都不满足。Math.Truncate返回所有整数部分。我希望106.7879返回106.78,但不要将值四舍五入到106.79。例如,它将向下四舍五入为正值,向上四舍五入为负值。这是我问题的一部分,如何取106.7879并将其截断到小数点后两位,使用标准,如何确保vb.net将进行适当的舍入。请在标准选项中尝试此选项:Return Math.Truncate(value*100)/100所选答案中的代码有一个针对OP要求的错误。如果未选择None,Math.Round(100.678,2)将返回100.68,而不是OP所需的100.67。这是我的问题的一部分,如何将106.7879截短到小数点后两位,对于Standard,我如何确保vb.net将进行正确的舍入。请尝试以下标准选项:返回Math.truncate(值*100)/100所选答案中的代码存在与OP要求相关的错误。如果没有选择,则数学四舍五入(100