我在CUDA中完成了我的論文,但我遇到了最後一個問題,那就是舍入浮點數。浮動四捨五入問題
我有一個名爲bin的整數變量,即x + y * X_dim的編碼。鑑於斌我想找到x和y coordenates發起它,所以我可以做一個對稱性計算。這是我原來的計劃:
float yaux,xaux;
yaux=(float)floorf((float)bin/((float)DETECTOR_X_DIM));
if(abs(yaux-floorf(yaux)) < 0.0001)
yaux=floorf(yaux);
else
yaux=ceilf(yaux);
xaux=(float)((float)(((float)bin/((float)DETECTOR_X_DIM))-(float)yaux)*((float)DETECTOR_X_DIM));
return (int)xaux;
if(abs(xaux-floorf(xaux)) < 0.0001)
xaux=floorf(xaux);
else
xaux=ceilf(xaux);
return (int)xaux;
xaux = (float)DETECTOR_X_DIM - xaux -(float)1;
return (int)xaux+(int)yaux*DETECTOR_X_DIM;
的問題是,它適用於探測器的一些二進制位,但它不爲別人打工(它返回xaux加1)。有沒有更好的辦法呢?
預先感謝您
您發佈的代碼應該代表什麼?大概不是你正在使用的*實際*代碼,因爲作爲閱讀,它完全沒有意義。超過一半的代碼是完全多餘的。 – talonmies
看起來你錯過了一些大括號?無論是或大部分的代碼是無法訪問... –
對不起,我做了一些改變,我忘了評論前兩個回報。我想我有點使用函數roundf,並把xaux = roundf(xaux),而不是與floor(xaux)的比較 – Bernardo