1
加工使用float而不是double的事實讓我困擾了很長時間。爲什麼Processing使用浮動而不是雙打?
我發現在PdeEmitter.java產生的實際碼塊,這是通過一個循環ANTLR AST:
// making floating point literals default to floats, not doubles
case NUM_DOUBLE:
final String literalDouble = ast.getText().toLowerCase();
out.print(literalDouble);
if (Preferences.getBoolean("preproc.substitute_floats")
&& literalDouble.indexOf('d') == -1) { // permit literal doubles
out.print("f");
}
dumpHiddenAfter(ast);
break;
這導致不相容的一個令人沮喪的量時轉換處理的代碼的標準Java(所有小數文字需要將f添加到最後,或者所有浮動需要重新命名爲double)。
它看起來像這樣可以在lib/preferences.txt被禁用:
# preprocessor: PdeEmitter.java
preproc.substitute_floats = true
#preproc.substitute_image = false
#preproc.substitute_font = false
不過,這打破了API的常見用法,因爲所有處理API函數進行浮法寫的。
那麼爲什麼到處都用浮子?我無法想象在這種類型的應用程序中存在大量的內存使用優化激勵。
http://stackoverflow.com/questions/417568/float-vs-double-performance – JNL
我不知道處理,但對於圖像浮動提供通常足夠的精度。我猜這個選擇是因爲float的內存帶寬要求較低(所以基本上是速度)。但是你必須要求創作者獲得一個*明確*回答爲什麼做出這個選擇。 – Durandal