比如char a[256]={0x00};
sprintf(a,"%.12f%",13082.8725);
我希望得到的是13082.872500000000
而不是13082.872599999990
請教一下大佬們應該怎么辦。
uj5u.com熱心網友回復:
浮點數格式 http://bbs.csdn.net/topics/390676437uj5u.com熱心網友回復:
沒有通用的方法,只能希望你用的庫實作有更高的轉換精度,就我的測驗,只有C++Builder 64位編譯器能正確轉換為13082.872500000000其他的C++編譯器,VC++、 intel C++、GCC,包括C++Builder 32位編譯器,轉換都是13082.872499999999
uj5u.com熱心網友回復:
浮點數精度限制13082.8725存到記憶體中時已經是13082.872599999990,所以錯不在sprintf,本來就是這樣的
如果確實需要這么高的精度,我知道Java里有BigDecimal,C++可以找一下第三方庫
或者自己寫結構,將小數分段存為幾個整數
uj5u.com熱心網友回復:
謝謝您。我再看看哈,真是麻煩您了
uj5u.com熱心網友回復:
直接定義,然后列印出來就是對的,可能是要求的小數位太多了。
uj5u.com熱心網友回復:
好的,謝謝您了,我看看啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/244463.html
標籤:C++ 語言
