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

VB.NET输入金额需为1000整数倍的校验问题排查

VB.NET 金额输入校验:确保输入为1000的整数倍

原代码的问题在于使用CLng()转换输入值时,会直接截断小数部分——比如输入7000.01会被转换成整数7000,导致校验逻辑误判为合法输入。要修正这个问题,需要先保留输入的小数信息,再进行校验。

修正思路

  1. 优先将输入转换为适合金额计算的Decimal类型(避免浮点精度问题)
  2. 校验两个核心条件:
    • 数值本身没有小数部分(即小数位为0)
    • 数值除以1000后结果为整数

修正后的代码示例

Dim inputAmount As Decimal
' 先判断输入是否能转换为合法的数值
If Decimal.TryParse(vAnswers(MINADDINDEX), inputAmount) Then
    ' 校验是否为1000的整数倍(无小数且能被1000整除)
    If inputAmount Mod 1000 <> 0 OrElse inputAmount <> Math.Floor(inputAmount) Then
        fDldErrors = True
        vAnswersErrs(MINADDINDEX) = "金额必须为1000的整数倍"
    End If
Else
    ' 处理非数值输入的情况
    fDldErrors = True
    vAnswersErrs(MINADDINDEX) = "请输入合法的数值"
End If

代码说明

  • 使用Decimal.TryParse()确保输入能被正确转换为数值,避免转换异常
  • inputAmount <> Math.Floor(inputAmount)用于判断输入是否存在小数部分
  • inputAmount Mod 1000 <> 0判断数值是否能被1000整除
  • 两个条件用OrElse连接,只要满足其中一个就判定为非法输入

内容的提问来源于stack exchange,提问作者Akshay phalphale

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 00:25:28