2016-02-05 58 views
0

我使用代碼這篇文章:我好像德爾福 - 檢查長使用POS

How to Convert Numbers (Currency) to Words

無法理解下面的代碼是怎麼工作的。

try 
    sIntValue := FormatFloat('#,###', trunc(abs(Number))); 
    sDecValue := Copy(FormatFloat('.#########', frac(abs(Number))), 2); 
    if (Pos('E', sIntValue) > 0) then // if number is too big 
    begin 
    Result := 'ERROR:'; 
    exit; 
    end; 
except 
Result := 'ERROR:'; 
exit; 
end; 

如何使用Pos()函數檢查數字是否太大?爲什麼在Integer中搜索E?這對我來說沒有意義。我會apprecaite任何解釋(代碼工作得很好,我只是想了解爲什麼和如何)。

+0

我回滾了你的編輯。我不知道你爲什麼要刪除代碼。沒有代碼就沒有問題。 –

+0

爲什麼要刪除與本文相同代碼的另一部分相關的[其他問題](http://stackoverflow.com/questions/35231959/)?這是一個完全有效的問題,它只需要一點清理。當你刪除它時,我正在爲它寫一個答案(當人們這樣做時,我討厭它)。 –

+0

看起來像[每日跆拳道](http://thedailywtf.com/)條目。你和你帶到這裏來的歡鬧讓我心滿意足! –

回答

2

該代碼正在檢查使用scientific notation。那就是你寫1000這個號碼的地方,如'1E3'

雖然代碼是微弱的荒謬。很難知道作者爲什麼沒有使用>比較運算符。

+0

我不確定我是否真誠地理解了你的答案,據我所知,代碼只接受19的長度(整數部分)只有二十億,那麼E意味着什麼? – user3597342

+0

E + 3是簡稱10提高到3. –

+0

好吧,我想你不知道什麼是科學記數法。我已經添加了一個鏈接到維基百科頁面,但說實話,你應該已經能夠爲自己看。 –