double m=0, k=10000,d=10000;
m=k-d;
其結果m不等于0
另外,StrToFloat(Edit1->Text) 其結果不是你需要的值。
請高手幫忙,謝謝。
uj5u.com熱心網友回復:
浮點數都有一個精度范圍,不能象整型數那樣可以精確相等uj5u.com熱心網友回復:
浮點數m==0的判斷可以用fabs(m)<1e-6來代替uj5u.com熱心網友回復:
沒這回事,就你這個例子,m必然是0,不優化也是0,優化則直接作0處理了。這樣運算得到的m,和0直接比較也沒問題。
uj5u.com熱心網友回復:
的確,關于 = 0 的判斷,可以自己寫個函式實作,類似 二樓 fabs(m)<1e-6 這樣的
uj5u.com熱心網友回復:
浮點數不適合直接==比較,因為浮點數特性,無法做到精確比較,你可以按樓上說到的 小于某個值的時候,認為它相當,float型別可以判到1e-6,double可以判到1e-10。StrToFloat(Edit1->Text) 一樣的問題,float精度有限,另外如果你的text是非法的,一樣會出錯。
我一般使用
double df = 0.0;
if ((rt = sscanf(Edit1->Text.cstr(), "%lf", &df)) != 1) {
//出錯
}
float ff = 0.0;
if ((rt = sscanf(Edit1->Text.cstr(), "%f", &ff) != 1) {
//出錯
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/74412.html
標籤:基礎類
上一篇:請高手幫助將龍文輸入平臺轉換成64位版本,32位下載地址:http://www.onlinedown.net/soft/25505.htm
