2016-02-05 53 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

好吧,我想你不知道什么是科学记数法。我已经添加了一个链接到维基百科页面,但说实话,你应该已经能够为自己看。 –