我試圖將double值轉換爲指數,但我得到了舍入誤差。C double to Exponential round error
int main (unsigned int argc, char **argv)
{
float a=293.17;
float b=293.10;
double ULfreq = 2089.555000;
double upfreq = 0.0;
long int t = 0;
long int u = 0;
upfreq = ULfreq * 1000000.0;
printf(" %f, upfreq:%22.16E\n", upfreq, upfreq);
return 0;
}
當我運行一個32位的電腦我得到以下結果這個代碼:
2089555000.000000, upfreq:2.0895549999999998E+09
在64位的一個運行它給出了正確的答案。
是否有可能使一個32位服務器,以及如何在這個轉換工作?
謝謝你沒有使代碼複製和粘貼... – glglgl
@glglgl我在他的帖子上做了一個編輯,它應該是你現在可見或很快。 – Jite
太好了,非常感謝! – glglgl