****大富翁太令我失望了!!小問題這麼久了都沒有人能解決**** 很奇怪的一個數據輸入格式的問題,十萬火急,請各住大哥快快相求啊!! 大富翁的高手呢?我的問題

  • 主题发起人 主题发起人 sydan
  • 开始时间 开始时间
S

sydan

Unregistered / Unconfirmed
GUEST, unregistred user!
****大富翁太令我失望了!!小問題這麼久了都沒有人能解決**** 很奇怪的一個數據輸入格式的問題,十萬火急,請各住大哥快快相求啊!! 大富翁的高手呢?我的問題應該也不算難啊.為何這麼久了都沒能人能幫我解決呢?我非常的急啊!版主啊,你能幫我解決這個問題嗎?大富翁的高手呢?都到哪里去啊!!! (20分)<br />浮點型字段如何控件它的小數點后只有3位有效小數
當我打入 1.123456789 系統則返回 1.1235

我所設的有關這個字段的格式有:
DisplayFormat 值為 $#0.000
EditFormat #0.000
Precision 3
其它 系統默認

打入 1.123456789 當我的光標離開時返回 1.124 ;原以為這樣就OK了!!
但是當我在一個沒有設置DisplayFormat格式的表單中再次打開時發現數據庫中的實
際結果是1.1235,這是怎麼回事啊,如何設置啊!!
數據庫是Access2000的.類型是數字型的.為雙精值,小數點為3位.

我還試有將字段的EditMask屬性,也出了怪問題了
EditMask的值為 ##.###
當我打入1后一離開就說我的值錯誤,但當我打入01后則可以,打入.123也可以返回0.123
這是怎麼回事,問題該如何解決呢?
 
修改字段的数据类型:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1307073
 
//Table1的ListPrice字段输入值
procedure TForm1.Table1ListPriceSetText(Sender: TField;
const Text: String);
var
l_Value : Double;
begin
if Trim(Text) &lt;&gt; '' then
begin
l_Value := StrToFloat(StringReplace(Text, ',', '', [rfReplaceAll]));//去掉豆号
Sender.AsString := FloatToStr(Int(l_Value * 1000 + 0.5) / 1000); //四舍五入,保留小数点后三位
end
else
Sender.AsString := '0';
end;
 
用Format函数(或者过程),具体的用法看帮助文件,里面全有,在Delphi的单元文件中,
写上Format,然后,把光标停在中间,按F1,关于Format的帮助文件酒会显示
 
我感覺Delphi這一點做得一點都不好!
那麼我看了幫助,他里面有說RoundTO函數可以四舍五入,為何我又用不了呢!

幫助中的用法 RoundTo(123.123456789,-5) 返回 123.12346

煩請幫助!!!!
 
你没仔细看帮助,ROUNDTO是统计学上的四舍五入,奇数进,偶数不进.
 
用formatfloat('#0.###',yourNum);
 
。。。。关注!
 
Dear all
您們能夠告訴我整套操作Fields的技術嘛.只我達到我的要求,分不成問題!
多謝各位!
 
不是很明白你的要求:
1 如果你只是要求显示一定形式的小数的话,在edit中就能实现,可以在离开时进行
判断,去掉多余的部分;
2 如果是数据库的话,那你在数据库定义时,就应该规划好字段的长度;
3 整套操作fields的技术是什么技术?最简单方便的方法就是去帮助中找啊,
然后在具体的问题上问别人,不然,你都不知道自己哪里不懂,别人也没法帮你的!
 
用这个方法一定可以:
1.显示格式##.###等
2.在table的beforePost处理浮点型字段。
 
svw0506的方法觉得比较好,它用了TField的OnSetText事件,而该事件正是Delphi为处理
这类问题而设的。
 
后退
顶部