You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VB.NET中让小数仅以.0或.5结尾?

VB.NET 时长数值按规则取整的实现

你可以通过以下方式修改calcDuration函数,实现对时长数值的自定义取整逻辑:

Private Sub calcDuration()
    Dim startTime As DateTime = Convert.ToDateTime(timeFromPicker.Text)
    Dim endTime As DateTime = Convert.ToDateTime(timeToPicker.Text)
    Dim span As TimeSpan = endTime.Subtract(startTime)
    Dim durationTot As Decimal = CDec(span.TotalHours)
    
    ' 处理小数部分,按规则取整
    Dim integerPart As Decimal = Math.Floor(durationTot)
    Dim decimalPart As Decimal = durationTot - integerPart
    
    Dim adjustedDuration As Decimal
    If decimalPart < 0.5D Then
        adjustedDuration = integerPart ' 小数部分小于0.5,转为.0结尾
    ElseIf decimalPart > 0.5D Then
        adjustedDuration = integerPart + 0.5D ' 小数部分大于0.5,转为.5结尾
    Else
        adjustedDuration = durationTot ' 小数部分等于0.5,保持原数值
    End If
    
    lblHiddenOTDuration.Text = adjustedDuration.ToString("N1")
End Sub

逻辑说明

  • 拆分时长的整数与小数部分:通过Math.Floor提取整数部分,原数值减去整数部分得到小数部分
  • 根据小数部分的范围调整数值:
    • 小数部分小于0.5时,直接取整数部分,结果以.0结尾
    • 小数部分大于0.5时,整数部分加0.5,结果以.5结尾
    • 小数部分等于0.5时,保留原数值(若需特殊处理,可自行修改分支逻辑)

另外,将span.TotalHours转换为Decimal时,使用CDec更符合VB.NET的类型转换规范,能避免隐式转换可能带来的问题。

内容的提问来源于stack exchange,提问作者Una O Lian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 23:03:12