我在spoj http://www.spoj.com/problems/ATOMS/上解決了這個問題。我必須給出log(m/n)/ log(k)的整數部分作爲輸出。我已經把m,n,k當作很久了。當我用長雙打計算時,我得到了一個錯誤的答案,但是當我使用float時,它就被接受了。有時浮動好於浮動嗎?
printf("%lld\n", (long long)(log(m/(long double)n)/log(k)));
這是給一個錯誤的答案,但這樣的:
printf("%lld\n", (long long)((float)log(m/(float)n)/(float)log(k)));
被錄取了。那麼在精度方面浮點數比雙精度好的情況下呢?
這並不是說'float'比'double'更好。將浮點數轉換爲整數時,應考慮舍入誤差。這並不像扔掉它那麼簡單。 –
如何安全地將浮點數轉換爲整數? @順磁牛角麪包 – In78