首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • js计算精度问题过长不准确怎么解决 [已结贴,结贴人:lyx320]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 14:45:34 楼主
    各位高手,小弟有一很急的BUG需要解决,希望各位给的答案
    我在项目中遇到这样个问题
    在页面使用js作加法运算,可是数字长度太长,js运算不出来,我们传过来的数
    都是20位的,好象js就不给你算了似的

    希望各位帮个忙!!
    有信誉,有满意答案一定给分,谢谢
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 14:47:421楼 得分:0
    精度不用像 直接截了
    str.toFixed(2)//截取2位
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 14:54:242楼 得分:0
    我们是20位的数字,不确定前几位是一样的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 14:56:023楼 得分:20
    JScript code
    str.toFixed(2)//截取小数点后2位
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 14:59:334楼 得分:0
    我们不是小数,整数
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 15:14:325楼 得分:0
    那没办法啦 只能从业务上想办法了 JS的NUMBER型是有边界的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 15:15:046楼 得分:0
    传到服务器端(java)计算。

    用ajax 、隐藏的iframe或者其它的方式
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 15:15:437楼 得分:0

    var a = 56574654238546688453;
    var b = 46585321313224565464;


    var c = a + b;
    alert(c.toFixed(0));
    c = a - b;
    alert(c.toFixed(0));
    c = a / b;
    alert(c);
    c = a * b * b * a * b * a * b * b;
    alert(c + "\n" + c.toFixed(0));


    还是能运算的, 精度不高而已
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pla18sep
    • 等级:
    发表于:2008-05-14 15:19:598楼 得分:0
    这么大的数,什么应用啊?
    想个其他办法吧!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 15:35:139楼 得分:0
    呵呵,这是网通客户定的,业务上是变不了,位数是改不了
    哎,
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:44:5410楼 得分:0
    定义为float行看看
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:47:2511楼 得分:30
    实在不行就使用AJAX放后台运算!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • muxrwc
    • 等级:
    发表于:2008-05-14 17:58:5512楼 得分:0
    晕.只有加法?


    比如

    222 + 999

    拆开来算呢?

    2 + 9
    11

    22 + 99

    121

    把超过的位数取出来

    然后在和前面的做计算。。

    1221
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • pla18sep
    • 等级:
    发表于:2008-05-14 21:23:4713楼 得分:50
    引用 12 楼 muxrwc 的回复:
    晕.只有加法?


    比如

    222 + 999

    拆开来算呢?

    2 + 9
    11

    22 + 99

    121

    把超过的位数取出来

    然后在和前面的做计算。。

    1221


    可解决,只是代价大了点,还是ajax后台解决比较好~!
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved