2014-06-26 62 views
0

新手在這裏:)德爾福7總和兩個數字與小數

我試圖讓需要用戶輸入,然後添加並減去這些變量Delphi應用程序。

我成功地創建應用程序,一切工作正常,除了:

無法找到適當的方式處理與小數位的數字。

實施例:

A,B,C,d,E,F:字符串; A1,B1,C1,D1,E1,F1:整數:

我使用InputBox來獲取用戶輸入。 我將輸入存儲在字符串變量中。 我將字符串變量轉換爲具有A1的整數:= strToint(A); 最後,我想:A1 + B1-C1-D1-E1-F1 如果輸入是整數,那麼結束一切工作。 如果用戶輸入帶小數的數字,則會出現問題。

我已經找遍了所有的地方也沒有找到一個答案,我的問題。(還是我沒明白)

任何人都可以請點我在正確的方向?

謝謝。

+1

嘗試StrToFloat代替StrToInt當輸入字符串包含小數點分隔符,你需要正確類型的變量 - 擴展,而不是整數 –

+0

您正在查找的單詞是「浮動」或「浮點數」。 – mg30rg

+0

也考慮使用有意義的變量名稱。如果你會寫出更復雜的代碼,那麼無意義的變量名會讓你發瘋。 – mg30rg

回答

6

您試圖將字符串轉換爲浮點值。

首先,您需要將您的Integer變量更改爲Double類型。這將允許您存儲不是整數的值。

其次你需要一個不同的功能來執行轉換。你應該使用TryStrToFloat。這試圖將字符串轉換爲浮點。如果轉換成功,函數返回True,否則返回False。例如:

var 
    str: string; 
    value: Double; 
.... 
if not TryStrToFloat(str, value) then 
begin 
    // handle error in some appropriate way 
end; 
// do something with value 
+0

+1,當將字符串轉換爲浮點值時,這是每個人都應該學習的第一件事。 –

4

顧名思義,StrToInt將數字字符串轉換爲其整數等效值。還有處理浮點數的類似函數StrToFloat

您的變量目前被定義爲整數。如果你想使用實數/十進制數字,你將需要使用Double類型。

我建議您參考Delphi文檔獲取更多信息。

+0

當你在這裏討論十進制數時要小心。該術語通常用來表示小數點而不是二進制。例如在Delphi中,十進制數字類型是'貨幣'。與二進制浮點非常不同。 –

+0

或者,如果精度很重要,請使用我的十進制類型:http://rvelthuis.de/programs/decimals.html。它有28位有效數字(或者更確切地說,是96位尾數/有效數字)。 –

+1

@RudyVelthuis這裏的主題非常多。我希望提問者不會認爲你的Decimal類型是去這裏的路。 ;-) –