Foxtable(狐表)用户栏目专家坐堂 → 小数位数的问题?


  共有21169人关注过本帖树形打印复制链接

主题:小数位数的问题?

帅哥哟,离线,有人找我吗?
cpayinyuan
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
小数位数的问题?  发帖心情 Post By:2009/3/13 15:23:00 [只看该作者]

记得以前有人提过这个问题,但在论坛上搜索不到了,只好再提!
在表中某列A列,数据类型是double,我定义一个全局变量a1(Double型)等于表中某行的A列。在表中这个值的小数位数是0,但在窗口的输入框中中显示a1的时候,显示了很长的小数位数。不知怎么回事?
例如:在表中的值为49,但在窗口中显示为:49.000000000000007
  
图片点击可在新窗口打开查看此主题相关图片如下:好长的小数.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/3/13 15:28:00 [只看该作者]

你的数据是导入的吧?

在命令窗口执行:

For Each dr As DataRow in CurrentTable.DataTable.DataRows
   if dr.Isnull("某列") = False Then
     dr("某列") = Math.Round(dr("某列"),2)
   End If
Next

执行完保存一下。


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/3/13 15:38:00 [只看该作者]

以下是引用狐狸爸爸在2009-3-13 15:28:00的发言:
你的数据是导入的吧?

在命令窗口执行:

For Each dr As DataRow in CurrentTable.DataTable.DataRows
   if dr.Isnull("某列") = False Then
     dr("某列") = Math.Round(dr("某列"),2)
   End If
Next

执行完保存一下。

试了,没有用!


 回到顶部
帅哥哟,离线,有人找我吗?
t_fs
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:2808 威望:0 精华:0 注册:2008/9/1 8:46:00
  发帖心情 Post By:2009/3/13 15:38:00 [只看该作者]

      此问题确实存在!
      当我把易表中的数据拷贝到狐表中时出现过这种问题,而且还导致在狐表中的计算结果与易表里的计算结果出现微小误差,(三万条记录)保留二位小数时误差可能在0.03左右。

       有点困惑!

 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/3/13 15:40:00 [只看该作者]

最气人的是,参与计算的时候,计算的时候也会无缘无故的出现小数误差!例如,把它增加1,则变为:50.000……7,气死人了!

估计是系统有问题!

[此贴子已经被作者于2009-3-13 15:41:02编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/3/13 15:42:00 [只看该作者]

用绝招:

全部乘100,然后列类型改为整数,保存
接着列类型改为双精度小数,然后全部除以100。


图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
t_fs
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:2808 威望:0 精华:0 注册:2008/9/1 8:46:00
  发帖心情 Post By:2009/3/13 15:52:00 [只看该作者]

以下是引用狐狸爸爸在2009-3-13 15:42:00的发言:
用绝招:

全部乘100,然后列类型改为整数,保存
接着列类型改为双精度小数,然后全部除以100。


图片点击可在新窗口打开查看

   真是绝招,没有办法的办法!!


 回到顶部
帅哥哟,离线,有人找我吗?
cpayinyuan
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:六尾狐 帖子:1412 积分:8937 威望:0 精华:0 注册:2008/9/1 8:57:00
  发帖心情 Post By:2009/3/13 15:58:00 [只看该作者]

 
我发现好像不是表的问题。好像是变量的问题。

是这样,在窗口中若直接显示表的值,不出现小数。

但是,我定义一个double型的全局变量,让它等于表中的该列的值,显示出来就成那样子了。

所以,我感觉不是数据转换的问题。好像系统本身有问题。把表的列改成整数列也不行。

但是很奇怪,不是所有的数字都出现问题,是偶尔。

[此贴子已经被作者于2009-3-13 15:58:04编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/3/13 16:07:00 [只看该作者]

或者在易表中导出为文本,然后在foxtable中导入文本。
以后有空的话,假如一个导入易表文件的功能,这样方便一些。

 回到顶部
帅哥哟,离线,有人找我吗?
t_fs
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:431 积分:2808 威望:0 精华:0 注册:2008/9/1 8:46:00
  发帖心情 Post By:2009/3/13 19:23:00 [只看该作者]

以下是引用狐狸爸爸在2009-3-13 16:07:00的发言:
或者在易表中导出为文本,然后在foxtable中导入文本。
以后有空的话,假如一个导入易表文件的功能,这样方便一些。

       应该!同一个爸爸的儿子,为何还同祖不同宗呢?这样也方便易表爱好者向狐表这边转变。


 回到顶部