2012-01-27 4 views
0

VB에서 간단한 곱셈을 수행하려고합니다. 다음은 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"을 주어야합니다.

+0

'수량'이 ​​초기화되는 방식에 따라 다릅니다. '수량 '이 얼마나되는지 모른다면 어떻게 대답 할 수 있습니까? –

답변

7

minusPrice를 정수로 선언 했으므로 결과가 반올림되었습니다. 필요에 따라

당신이 필요로 ...

Dim minusPrice As Decimal 
Dim totalPrice As Decimal 

또는 더블 ... 또는 플로트. 가격은 보통 10 진수입니다. 0.3 않는 한

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

또한 작은 반올림 오류가 발생할 수 소수로 표현된다

--- 편집 --- 그냥 내가 중요한 부분을 놓친 것으로 나타났습니다.

+0

+1; 또한, 그것의 외모에서'totalPrice'는 아마도 십진수 여야합니다. – vcsjones

+0

@vcsjones 감사합니다. – perfectionist

3

minusPriceInteger으로 선언되며 소수점 앞에 부분 만 포함됩니다. 10 진수 값을 저장하려면 Decimal 유형을 사용해야합니다. totalPrice도 마찬가지입니다.

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 
+0

고맙습니다 지금 –

+0

도와 드리겠습니다. 유용 할 경우 대답을 수락하십시오. –

0
dim minusprice as integer 

이 당신이 0.3를 곱했을 때 정수의 곱셈을하고 있다는 것을 의미한다. .3의 정수 부분은 0이므로 * 0 = 0입니다. 코드를로 변경하십시오. 당신이 IntegerminusPrice를 선언함에 따라

dim minusprice as single 
0

, 그것은 분수를 포함 할 수 없습니다. 계산이 올바르게 수행되었지만 정수로 변환됩니다. 코드에서 무슨 일

는 실제로 :

minusPrice = CInt(CDbl(minus) * 0.3) 

당신이 Double 또는 대신 calcuation의 결과가 변환되지 않습니다 Decimal A와 minusPrice를 선언합니다.

유형 Double은 정규 부동 소수점 연산에 사용됩니다. 당신이 알고 있어야하는 정밀도의 고유 한 한계가 있지만, 이것을 가격 표시에만 사용한다면 충분합니다.

유형 Decimal은 고정 소수점 데이터 유형이므로 분수 값을 정확히 나타낼 수 있습니다. 이는 금전적 가치를 진지하게 파악해야 할 때 사용해야하는 사항입니다.