FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 5047|回复: 2
打印 上一主题 下一主题

【有意思】NumberBox长度超过16位的数字时会自动把末位变

[复制链接]
跳转到指定楼层
楼主
发表于 2013-5-4 20:50:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


如图,第一张图是16位数字,从数据库里读出来显示,第一个是用TextBox显示,正确,第二个是用NumberBox显示,正确。
第二张图是17位数,第一个是用TextBox显示,正确,第二个是用NumberBox显示,错误。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
发表于 2013-5-4 22:21:52 | 只看该作者
这个问题真有意思,我们来看几个JavaScript例子:
  1. var a = 1111111111111111; // 16个数字
  2. console.log(a); // 结果是1111111111111111
  3. var a = 11111111111111111; // 17个数字
  4. console.log(a); // 结果是11111111111111112
  5. var a = 111111111111111111; // 18个数字
  6. console.log(a); // 结果是111111111111111100
  7. var a = 1111111111111111111; // 19个数字
  8. console.log(a); // 结果是111111111111111200
  9. var a = 11111111111111111111; // 20个数字
  10. console.log(a); // 结果是11111111111111110000
复制代码
再来看几个例子:
  1. var a = "1111111111111111"; // 16个数字
  2. console.log(parseFloat(a)); // 结果是1111111111111111
  3. var a = "11111111111111111"; // 17个数字
  4. console.log(parseFloat(a)); // 结果是11111111111111112
  5. var a = "111111111111111111"; // 18个数字
  6. console.log(parseFloat(a)); // 结果是111111111111111100
复制代码
是不是这个数字太大,JavaScript表示不了了?也不是!
  1. Number.MAX_VALUE // 1.7976931348623157e+308
复制代码

再来看:
  1. var a = "11111e100"; // 1后面有100多个零
  2. console.log(parseFloat(a)); // 结果是1.1111e+104
复制代码


========================

所以应该是JavaScript表示数字的精度不够了,看网上有提到这个问题的:http://zhidao.baidu.com/question/49623416.html
对于精度是6位或7位的问题,float型(4字节32位)精度确实是6位或7位,而double型(8字节64位)精度是15或16位.


所以,对于如此长的数字,就不要用NumberBox控件了。
板凳
 楼主| 发表于 2013-5-5 08:13:46 | 只看该作者
{:soso_e179:}最后我是用TextBox,然后用Regex属性来验证数字。以前都没现这属性,看来还要继续研究啊。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-5-22 21:55 , Processed in 0.046213 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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