【问题标题】:multiple inputs in text box not totaling文本框中的多个输入不总计
【发布时间】:2014-06-07 06:22:59
【问题描述】:

我有另一个超级基本的问题,我试图合计用户输入的 txtPrice.Text 中每个条目的小计,然后用更新的税金、运费和总计刷新其他标签。它没有总计 subTotal,其他一切正常。那是怎么回事?

Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
    Dim sglSub As Single
    Dim sglTotal As Single
    Dim sglSalesTax As Single
    Const TAX_RATE As Single = 0.02
    Dim bytShippingCharge As SByte = 10
    Dim sglCompTotal As Single


    Single.TryParse(txtPrice.Text, sglSub)
    sglTotal += sglSub
    lblSubTotal.Text = sglTotal.ToString("C2")

    sglSalesTax = (sglTotal * TAX_RATE)

    lblTax.Text = sglSalesTax.ToString("C2")

    If sglTotal >= 100 Then
        bytShippingCharge = 0
    End If
    lblShipping.Text = bytShippingCharge.ToString("C2")
    sglCompTotal = (sglTotal + sglSalesTax + bytShippingCharge)
    lblTotal.Text = sglCompTotal.ToString("C2")
End Sub

【问题讨论】:

  • every entry in the txtPrice.Text the user enters - 我没有看到任何可以处理多个条目的东西。看起来像一个条目,就是这样。你指的是哪个变量? sglSub? Decimal 类型比 Singles 或 Doubles 更适合财务计算。
  • 我希望用户在文本框中输入一个金额,并且每次用户单击 btnCalc 时,它都会将 slgSub(文本框中当前的金额)添加到 slgTotal。然后使用 slgTotal,刷新 lblTax lblShipping 和 lblTotal。
  • 所有变量都只在 Calc 方法的范围内,所以当你点击 calc 按钮时它们都初始化为零。 听起来您想在表单级别声明 slgTotal:Private slgTotal As Decimal(是的,切换到小数)。
  • 哪一行没有产生预期的结果?请使用调试器找出答案。将此信息添加到您的问题中。
  • 与金钱打交道时,始终使用Decimal,而不是SingleDouble

标签: vb.net


【解决方案1】:

提示 在这一行:

sglTotal += sglSub

-每次使用总计时,在向​​其添加值之前将其初始化为零。否则会导致不良结果。

-使用货币时最好使用小数类型。

如果你想让一个变量保持它的值,声明它是共享的。

这是一个关于如何使用共享字段的小例子

Public Class Form1
   Shared total As Decimal = 0D

   Shared Sub calc()
       total += 2
   End Sub


   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       calc()
       Label1.Text = total.ToString
   End Sub
End Class

【讨论】:

  • 在表单级别声明一个共享变量和声明一个私有变量有什么区别?两者都有效。
  • 在这种情况下没有。不能将变量声明为共享为局部变量。只是为了让你知道它的存在。所以在这种情况下,只需在表单级别声明它。
  • 如果您知道如何处理面向对象的编程,最好为您的计算创建一个类或结构。
  • 您可以声明一个共享方法来使用共享字段(您想要的总数)来管理此计算。它将保留该值。
  • 如果您有多个相同表单的实例,则会有所不同。
猜你喜欢
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多