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

QQ登录

只需一步,快速开始

查看: 3779|回复: 6

[结贴] action返回的数值小数位问题

[复制链接]

73

主题

292

帖子

1410

积分

金牌会员

Rank: 6Rank: 6

积分
1410
QQ
发表于 2016-12-5 16:55:51 | 显示全部楼层 |阅读模式
版本: BeX5V3.5 小版本号:
数据库: MS SQLServer 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 7 浏览器: Chrome
用action从数据库中读取并返回一个BigDecimal值,

例如:124.00

java中println已打印出来结果为124.00,
但前端JS取值后就变成了124,不带小数了。不知道为什么???


(由于程序应用对数据精度有要求,一定要保留原值的小数。)

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-12-5 17:46:54 | 显示全部楼层
把java和js代码发一下看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

73

主题

292

帖子

1410

积分

金牌会员

Rank: 6Rank: 6

积分
1410
QQ
 楼主| 发表于 2016-12-5 18:18:42 | 显示全部楼层
JAVA:
        public static BigDecimal getDecimalFromSQL(String SQLString){
                Map<String, String> sql = new HashMap<String, String>();
        sql.put(SQL.DEFAULT_DB_NAME, SQLString);
        // 执行SQL并传入参数
        Table table = SQL.select(sql, null, "/lab/common/data");
        // 从返回的Table对象里面,获取返回值

        BigDecimal rs;
        Iterator<Row> rows = table.iterator();
               
        if (rows.hasNext()) {
            Row row = rows.next();
            rs = row.getDecimal(0);
            System.out.println(rs);      //能显示出正确值,如:124.00
        } else {
                rs = null;
            //throw new RuntimeException("无返回值!");
        }       
        
        return rs;
        }

JS:
                getDecimalFromSQL : function(SQL, context) {
                        var params = new biz.Request.ActionParam();
                        params.setString("SQLString", SQL);

                        var rs = null;
                        biz.Request.sendBizRequest({
                                "context" : context,
                                "action" : "getDecimalFromSQL",
                                "parameters" : params,
                                "callback" : function(result) {
                                        result.ignoreError = false;
                                        if (result.state) {
                                                rs = result.response; // 返回读取值
                                                alert(rs);                 //显示返回值为:124,  小数位被去掉了
                                        }
                                }
                        });

                        return rs;
                },
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-12-6 09:34:11 | 显示全部楼层
可以先在js中加个判断,判断返回的数据是否有小数,如果没有加强制设置小数看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

73

主题

292

帖子

1410

积分

金牌会员

Rank: 6Rank: 6

积分
1410
QQ
 楼主| 发表于 2016-12-7 08:34:39 来自手机 | 显示全部楼层
现在的问题是搞清楚为什么传到前端就没了小数位?强制添加小数位的方法行不通,因为要求保留的小数位不是固定的,是由SQL取值语句确定的,可能整数,也可能1位、2位、3位。
继续求解

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2016-12-7 10:10:02 | 显示全部楼层
在往前端传的时候需要toString转换,标准的java中toString转换后后面的也会丢失,目前只能这样

如果要这样的可以先绕一下,比如把小数点左右的分隔放到Map或者list中,返回Map或list,然后前端获取后自己拼接
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

73

主题

292

帖子

1410

积分

金牌会员

Rank: 6Rank: 6

积分
1410
QQ
 楼主| 发表于 2017-5-25 00:35:10 | 显示全部楼层
结贴吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-25 03:08 , Processed in 0.082919 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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