请问数据类型装换的问题

yanghits 2002-10-12 05:06:06
我设置了一个real 型的变量r_lp,给其赋值
r_lp=74.3然后想把他显示到单行编辑框中设编辑框名
为sle_jczssyj,然后编写脚本:sle_jczssyj.Text=String(r_lp)
但是显示的数时74.30011587这样。在数据转换时出了问题,
我查了string 转换函数,他可以加一个format参数设置格式。
但是我数据库中的数不一定是几位小数,我想让在数据库中是几位
小数就是几位,不想设成固定的位数,怎么转换?也就是,假设real型
的数是74.3就显示74.3是75.23就显示75.23而不是固定的假设设成是
三位小数,都显示为:74.300和75.230,有什么好方法吗?
...全文
51 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
pp_key 2002-10-13
  • 打赏
  • 举报
回复
real是近似值,所以会出现这样的情况,decmimal是精确值,你应该选用这个
现在先用dec()转换一下试试
hanhy 2002-10-13
  • 打赏
  • 举报
回复
sle_jczssyj.Text=String(r_lp,'000000.00')
jimly 2002-10-13
  • 打赏
  • 举报
回复
real r=74.3
string(r)="74.30011587"是转化的问题,十进制小数部分转化为二进制存储,再转为十进制显示,产生了这种现象,是数值转化的误差。

数据窗口语法中一个字段的数据类型是decimal(2),其中的2就是说明有两位小数。

1、如果是从数据窗口中读取的数据,可直接获取显示文本:
dw.Describe("Evaluate('LookupDisplay("+ls_ColumnName+")',"+string(ll_i)+")") //获得数据窗口中列名为ls_ColumnName,第li_i行的显示文本

2、如果是采用游标,就要先获得字段的小数位数,再构造format参数设置格式了。不同的数据库获得字段小数位数的操作可能不相同。
ms sql server 视图COLUMNS的Nemeric_scale字段就是小数位数。
在 sql manager 上执行查询:
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
返回结果中所有表的所有字段的字段类型、长度、精度、小数位都可以找到。

------------------------------------------------
yanghits 2002-10-13
  • 打赏
  • 举报
回复
pp_key(好想....) 说的好像也是不太合用。
yanghits 2002-10-13
  • 打赏
  • 举报
回复
谢谢各位!现在偶结贴先:)
yanghits 2002-10-12
  • 打赏
  • 举报
回复
数据表里已经存的是real格式,这些数据是已经采集好了的。显示的还是正常如(74.3),但是在转化为varchar后就出现了乱数如(74.30011587),这种情况是不是类型装换函数的问题?谢谢各位:)
huihuishou 2002-10-12
  • 打赏
  • 举报
回复
这是出于你的特殊需要而提的建议,我估计你是想使用real型的数据进行计算,但是显示的时候又要保证用户的输入逻辑。
huihuishou 2002-10-12
  • 打赏
  • 举报
回复
①可以把该列变为varchar类型,今后要使用该列进行计算的时候再用real()函数转换成real类型
②在表中加一列,类型为varchar型,输入和显示的时候用该列,保存时用real列,不过这不符合数据一致性的规则。所以不建议采用。
hzhxxx 2002-10-12
  • 打赏
  • 举报
回复
decimal
yang1105 2002-10-12
  • 打赏
  • 举报
回复
r_lp别用real型,用decimal或double试试!
banalman 2002-10-12
  • 打赏
  • 举报
回复
up

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧