数学计算在vb

时间:2012-01-27 15:04:40

标签: vb.net visual-studio-2010

我正在尝试在vb中执行简单的乘法。

以下是我的代码:

Dim minus As Integer
Dim minusPrice As Integer
Dim totalPrice As Integer
         If quantity > 20 Then
            minus = quantity - 20
            minusPrice = ((minus) * (0.3))
            MsgBox("Minus " + minus.ToString)
            MsgBox("minusPrice " + minusPrice.ToString)

            totalPrice = 30 + minusPrice
        End If

但为什么“minusPrice”给我0? 它应该给我“0.3”。

4 个答案:

答案 0 :(得分:7)

您将minusPrice声明为整数,因此它会对结果进行舍入。

你需要......

Dim minusPrice As Decimal
Dim totalPrice As Decimal

或Double ...或浮动,视您的需要而定。价格通常是十进制的。

---编辑---

注意到我错过了一个至关重要的部分:

minusPrice = ((minus) * (0.3m))

除非0.3也表示为小数,否则可能会出现小的舍入误差。

答案 1 :(得分:3)

minusPrice被声明为Integer,它只包含小数点前的部分。为了能够存储小数值,您需要使用类型DecimaltotalPrice也是如此。

Dim minus As Integer
Dim minusPrice As Decimal
Dim totalPrice As Decimal
If quantity > 20 Then
    minus = quantity - 20
    minusPrice = ((minus) * (0.3))
    MsgBox("Minus " + minus.ToString)
    MsgBox("minusPrice " + minusPrice.ToString)

    totalPrice = 30 + minusPrice
End If

答案 2 :(得分:0)

dim minusprice as integer 

这意味着当你乘以.3时,你正在进行整数乘法运算。 .3的整数部分为0所以* 0 = 0。将代码更改为。

dim minusprice as single

答案 3 :(得分:0)

由于您已将minusPrice声明为Integer,因此它不能包含分数。计算正确完成,但随后转换为整数。

代码中发生的事实是:

minusPrice = CInt(CDbl(minus) * 0.3)

如果您将minusPrice声明为DoubleDecimal,则不会转换计算结果。

类型Double用于regual浮点运算。您应该注意固有的精度限制,但如果您只是为了显示价格而使用它,那就足够了。

类型Decimal是固定点数据类型,这意味着它可以精确地表示小数值。如果您需要以严肃的方式跟踪货币价值,那么您应该使用这一点。