我不得不從數據庫表中選擇的一些列數據,使這個數據,只有小數點後兩位。我看到這個如何在delphi中保留2位小數?
SQL.Strings = ('select' #9'my_index '#9'his_index,'...
那是什麼#9?
我該如何處理我選擇,使之只保留小數點後兩位的數據?
我是很新的德爾福。
謝謝!
我不得不從數據庫表中選擇的一些列數據,使這個數據,只有小數點後兩位。我看到這個如何在delphi中保留2位小數?
SQL.Strings = ('select' #9'my_index '#9'his_index,'...
那是什麼#9?
我該如何處理我選擇,使之只保留小數點後兩位的數據?
我是很新的德爾福。
謝謝!
#9
與代碼9,TAB字符。
如果你想將浮點值轉換爲字符串,您使用的格式化功能一個2位小數,如Format()
:
var
d: Double;
s: string;
...
d := Sqrt(2.0);
s := Format('%.2f', [d]);
請修復顯而易見的語法錯誤。 – 2011-04-13 13:34:32
#9
是製表符。
如果f
是一個浮點變量,則可以執行FormatFloat('#.##', f)
以獲取不超過2位小數的字符串表示形式f
。
遲到14秒! – 2011-04-13 13:41:21
@David:我知道,我正在解決一個PDE,並沒有給予足夠的重視,所以... – 2011-04-13 13:42:24
哦......你們相互競爭!多謝你們倆! – spspli 2011-05-10 15:27:15
內部浮點格式程序只用簡單的數字工作> 1
你需要做一些更復雜,通用小數位限制器正常工作在兩個固定點,用科學記數法值< 1。
我用這個程序
function TForm1.Flt2str(Avalue:double; ADigits:integer):string;
var v:double; p:integer; e:string;
begin
if abs(Avalue)<1 then
begin
result:=floatTostr(Avalue);
p:=pos('E',result);
if p>0 then
begin
e:=copy(result,p,length(result));
setlength(result,p-1);
v:=RoundTo(StrToFloat(result),-Adigits);
result:=FloatToStr(v)+e;
end else
result:=FloatToStr(RoundTo(Avalue,-Adigits));
end
else
result:=FloatToStr(RoundTo(Avalue,-Adigits));
end;
所以,用數字= 2,1.2349四捨五入爲1.23和1.2349E-17回合1.23E-17
使用名爲RoundingUserDefineDecaimalPart
功能。
用於例如爲:
avg := RoundingUserDefineDecaimalPart(avg, 2);
你能解釋一下你在哪裏找到這個神奇的功能以及它是如何工作的? – 2017-11-27 12:22:19
https://stackoverflow.com/a/47566361/8319246 – amytrajghimire 2017-11-30 05:20:07
這個工作對我來說:
Function RoundingUserDefineDecaimalPart(FloatNum: Double; NoOfDecPart: integer): Double;
Var
ls_FloatNumber: String;
Begin
ls_FloatNumber := FloatToStr(FloatNum);
IF Pos('.', ls_FloatNumber) > 0 Then
Result := StrToFloat
(copy(ls_FloatNumber, 1, Pos('.', ls_FloatNumber) - 1) + '.' + copy
(ls_FloatNumber, Pos('.', ls_FloatNumber) + 1, NoOfDecPart))
Else
Result := FloatNum;
End;
什麼數據類型的數據庫?德爾福有什麼字段類型?您是否需要將數據作爲字符串使用,或者您是否需要將數據作爲四捨五入的數字類型保留2位小數? – 2011-04-13 13:34:26