临时表中小数位数的问题

deng_biao 2012-08-21 05:22:33
临时表内容:
名称 数量 单价 金额
石头 2.00 10.0000 20.0000
小石头 3.00 5.5000 15.0000
大石头 3.50 15.0500 52.6750

就列以上三条记录

我要的结果是:
名称 数量 单价 金额
石头 2 10 20.00
小石头 3 5.5 15.00
大石头 3.5 15.05 52.68

If 字段类型 $ 'INY'
If 表中所有字段中只要字段名包含'金额'二字
全部四舍五入为2位有效数字
Else
其他字段必须去掉小数点后面无效的0,如3.00变成3,意思就是把后面的0去掉但不改变其值.
还要保存到表中,(这里我发现不行,不知道各位有没有什么好的主意??????????????????)
EndIf
EndIf
...全文
203 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
deng_biao 2012-08-22
  • 打赏
  • 举报
回复
是没什么用,
deng_biao 2012-08-22
  • 打赏
  • 举报
回复
只是我要显示在表格中,不知道行不行,我试试
deng_biao 2012-08-22
  • 打赏
  • 举报
回复
要的就是显示效果.谢谢了啊
十豆三 2012-08-22
  • 打赏
  • 举报
回复
你的要求很特别,没有什么意义。
存储不用管,只在显示时改变一下,间接达到你的效果。
*-- vfp9.0,以下结果为了符型

lnNum=1230.00
?Iif(Int(lnNum)=lnNum,Transform(lnNum),Rtrim(Transform(lnNum),'0')) && 结果为 1230

lnNum=1230.10
?Iif(Int(lnNum)=lnNum,Transform(lnNum),Rtrim(Transform(lnNum),'0')) && 结果为 1230.1

lnNum=9420.51780
lnNum=Round(lnNum,2)
?Iif(Int(lnNum)=lnNum,Transform(lnNum),Rtrim(Transform(lnNum),'0')) && 结果为 9420.52

lnNum=0.23000
?Iif(Int(lnNum)=lnNum,Transform(lnNum),Rtrim(Transform(lnNum),'0')) && 结果为 0.23

lnNum=5.0
?Iif(Int(lnNum)=lnNum,Transform(lnNum),Rtrim(Transform(lnNum),'0')) && 结果为 5
deng_biao 2012-08-22
  • 打赏
  • 举报
回复
楼上的有用吗?保存到表中后其表显示的值还是根据其原表格式来显示了,例如数量,我插入的是3,但还是显示3.00
lygcw9602 2012-08-21
  • 打赏
  • 举报
回复
VFP9.0函数
ROUND( ) 函数 

返回四舍五入到指定小数位数的数值表达式。

ROUND(nExpression, nDecimalPlaces)

参数
nExpression :指定要四舍五入的数值表达式。
nDecimalPlaces :指定 nExpression 四舍五入到的小数位数。
如果 nDecimalPlaces 为负数,则 ROUND( ) 返回的结果在小数点左端包含 nDecimalPlaces 个零。例如,如果 nDecimalPlaces 为 -2,那么小数点左端的第一和第二个数字均为 0。
返回值:数值型。
ROUND( ) 返回的值有 nDecimalPlaces 个小数位。

说明
ROUND( ) 忽略由 SET DECIMALS 命令指定的小数位。为了在 ROUND( ) 中显示超过 nDecimalPlaces 小数位数的数,要使用 SET FIXED ON 与 SET DECIMALS。

示例
下面示例使用 SET DECIMALS 和 SET FIXED 命令显示四位小数的值,然后使用 CLEAR 命令对 Visual FoxPro 主窗口清屏,用 ? 命令显示 ROUND( ) 函数执行四舍五入的结果,最后示例使用 SET DECIMALS 和 SET FIXED 恢复初始值。

SET DECIMALS TO 4
SET FIXED ON
CLEAR
? ROUND(1234.1962, 3) && Displays 1234.196
? ROUND(1234.1962, 2) && Displays 1234.20
? ROUND(1234.1962, 0) && Displays 1234
? ROUND(1234.1962, -1) && Displays 1230
? ROUND(1234.1962, -2) && Displays 1200
? ROUND(1234.1962, -3) && Displays 1000
SET FIXED OFF
SET DECIMALS TO 2

deng_biao 2012-08-21
  • 打赏
  • 举报
回复
保存到表中后其表显示的值还是根据其原表格式来显示了,例如数量,我插入的是3,但还是显示3.00

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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