Qry_in_storage_detail.FieldByName('sum_weight').AsFloat:= Qry_in_storage_detail.FieldByName('goods_weight').AsFloat*Qry_in_storage_detail.FieldByName('goods_quantity').AsInteger;
在資料庫中定義了sum_weight,goods_weight為數值型保留八位小數,然而在DBGRID中goods_weight顯示沒有問題,但是sum_weight計算出來保留八位小數就出問題,比如goods_weight=0.21 goods_quantty=120,計算出來的結果是:25.19999999 而不是25.20000000,請各位大師指點一下,謝謝
uj5u.com熱心網友回復:
再次說明,奇怪的是不是所有記錄都不對,有部分記錄計算出來就是那種結果uj5u.com熱心網友回復:
sum_weight,goods_weight資料庫中是numeric型的,DELPHI中 Qry_in_storage_detail.FieldByName('sum_weight').AsFloat:= Qry_in_storage_detail.FieldByName('goods_weight').AsFloat*Qry_in_storage_detail.FieldByName('goods_quantity').AsInteger; asfloat是保留近似值,AsCurrency只能保留到四位小數,請問怎么樣才能保留八位小數,并且計算結果準確uj5u.com熱心網友回復:
浮點型別就是這樣的。你要用FormatFloat函式來格式化后顯示。
uj5u.com熱心網友回復:
FormatFloat函式只能根據內容顯示保留位數,目前我是想保留八位小數,但目前就是因為小數位的問題本來是25.20000000的結果,但是顯示成了25.19999999uj5u.com熱心網友回復:
怎么樣才能讓結果準備,而不是顯示位數問題,目前顯示小數位沒有問題,就是算的不對uj5u.com熱心網友回復:
估計你的資料庫用的是ACCESS,資料型別為單精度數字.改為雙精度,或是小數都可以解決這個問題.
uj5u.com熱心網友回復:
我是用的SQLuj5u.com熱心網友回復:
SQL SERVER2008資料型別為float,測驗無浮點精度的問題。查詢如下,運算 0.21*120=25.2 :
select * ,goods_weight*goods_quantity from table_b
uj5u.com熱心網友回復:
比如:FormatFloat('0.00000000',22.22);結果就是22.22000000,沒明白樓主說的:FormatFloat函式只能根據內容顯示保留位數什么意思。還有就是,你把資料插入資料庫的時候,用FormatFloat先定一下位數,寫過進銷存,表示沒有這樣的計算錯誤。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/132852.html
標籤:語言基礎/算法/系統設計
上一篇:求助SQL大神
