2014-02-18 2 views
1

아래와 같이 문자열 형식의 두 숫자의 합계를 얻고 싶습니다. 그러나 작동하지 않습니다. 어떤 아이디어? costDay2.Text 및 costDay3.Text는 텍스트 박스에서 숫자 값이다정수로 변환하고 두 숫자의 합계를 얻으십시오

Dim Days23 As Decimal 

Days23 = (Convert.ToDecimal(costDay2.Text) + Convert.ToDecimal(costDay3.Text)) 

I 얻는 결과는 0.00이지만 costDay2.Text = 150.00 및 200.00 = costDay3 값이며, 그래서 그 결과이어야 350.00

+3

무엇이 작동하지 않습니까? 에러 메시지? – Steve

+1

텍스트 상자 문자열을 Decimal (좋은!)로 변환하지만 합계를 정수 (나쁜 값)에 저장하는 중입니다. 당신은 분수 부분을 잃게됩니다. 그러나 참으로. 'doesnt 일'은 매우 서술 적이 지 않다. – Plutonix

답변

2

이것은 VS 2012에서 작동합니다. 텍스트 상자 2 개, costDay2, costDay3 및 하나의 명령 단추. 런타임에 각 텍스트 상자에 값 2.01과 2.50을 입력합니다. 내가 Button1을 클릭하고 예상대로 4.51의 결과를 얻을

다음
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
Dim Day2, Day3, Day23 As Double 

Day2 = costDay2.Text 
Day3 = costDay3.Text 
Day23 = Day2 + Day3 
MsgBox(Day23) 
End Sub 
+1

Option Strict Off = BAD BAD BAD 및 BAD – Steve

1

나쁜 값입니다 당신이 당신의 프로그램을 사용자가 알고

Dim day2, day3 as Decimal 

if Not Decimal.TryParse(if(costDay2.Text.Trim() = string.Empty, "0", costDay2.Text.Trim()), day2) Then 
    MessageBox.Show("Invalid number in costDay2") 
    Return 
end if 

if Not Decimal.TryParse(if(costDay3.Text.Trim() = string.Empty, "0", costDay3.Text.Trim()), day3) Then 
    MessageBox.Show("Invalid number in costDay3") 
    Return 
end if 

Dim Days23 As Decimal = day2 + day3 

이 방법을 개선 할 수있는 방법이며, 아무것도 존재하지 않는 경우 -이입니다 지금까지

을 "0"있는 같이 "나는 얻을 결과는 0.00이지만, costDay2.Text = 150.00 및 costDay3 = 200.00, 그래서 결과의 값은 350.00해야한다" - 그냥보고 있습니다 틀린 장소

+0

TryParse는 문자열을 십진수로 변환 할 수 없지만 최소한 올바른 경로에있는 경우 – Steve

+0

@Steve : o)이 특정 논리에서 10 진수를 0으로 설정합니다. 값이 비어 있으면 "tryParse"가 실패합니다. 왜냐하면 If (?, True, False)를 사용하지 않고 text가'string.empty'라면'tryParse'는'false'를 반환 할 것이기 때문입니다. 텍스트가'abc' 인 경우'0'을 원하지 않았습니다 - 이것은 오류 –

+0

입니다. 제가 말했듯이 이것은 받아 들인 대답보다 훨씬 낫습니다. – Steve

관련 문제