起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2394|回复: 4

[结贴] 数据计算出错问题

[复制链接]

9

主题

30

帖子

92

积分

初级会员

Rank: 2

积分
92
QQ
发表于 2016-6-23 18:14:12 | 显示全部楼层 |阅读模式
版本: BeX5V3.1 小版本号: 2.1
数据库: MS SQLServer 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 8 浏览器: IE10
  1. test.dataMainValueChanged = function(event){
  2.     var dataMain = justep.xbl('dataMain');

  3.         var dj = dataMain.getValue('fWPDJ');
  4.         var sl = dataMain.getValue('fWPSL');
  5.         var zk = dataMain.getValue('fZK');
  6.         var ysfy = dj*sl*zk;
  7.         alert('应收费用'+ysfy);
  8.         dataMain.setValue('calculate0', ysfy);
  9.         };
复制代码
通过代码计算应收费用,但是结果为什么是错的?

概念设置.png
出错结果.png

9

主题

30

帖子

92

积分

初级会员

Rank: 2

积分
92
QQ
 楼主| 发表于 2016-6-23 18:15:04 | 显示全部楼层
calculate0 的type属性为float
回复 支持 反对

使用道具 举报

9

主题

30

帖子

92

积分

初级会员

Rank: 2

积分
92
QQ
 楼主| 发表于 2016-6-23 18:19:35 | 显示全部楼层
计算结果是整数就没问题,但是有小数就不对了,为什么啊。。

出错结果2.png
回复 支持 反对

使用道具 举报

9

主题

30

帖子

92

积分

初级会员

Rank: 2

积分
92
QQ
 楼主| 发表于 2016-6-23 23:58:43 | 显示全部楼层
原来是浮点数乘法丢精度问题,用函数解决对不对?
  1. test.dataMainValueChanged = function(event){
  2.     var dataMain = justep.xbl('dataMain');

  3.         var dj = dataMain.getValue('fWPDJ');
  4.         var sl = dataMain.getValue('fWPSL');
  5.         var zk = dataMain.getValue('fZK');
  6.         var ysfy = justep.Number.accMul(dj,sl);
  7.         var ysfy2 = justep.Number.accMul(ysfy,zk);
  8.         dataMain.setValue('calculate0', ysfy2);
  9.        
  10.         };
复制代码
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35945
发表于 2016-6-24 10:07:33 | 显示全部楼层
js中计算float会有精度的问题,可以js标准的处理方案去处理,或者就用4楼的方案
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-21 23:06 , Processed in 0.072073 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表