找回密码
 点一下
查看: 1525|回复: 20

数学问题

[复制链接]
发表于 2011-5-4 16:16:53 | 显示全部楼层 |阅读模式
A为实数  MONEY为整数

A=(转换MONEY为实数)*((1.00/100.00)+1.00))
X=X+(转换A为整数)
显示排行榜玩家1的分数为X

假设MONEY=1000的时候  X会显示1010的
但是X却显示1009,比实际的数字少1

如果设置MONEY=2000的时候  X会显示2020的
但是X却显示2019,比实际的数字也少1

X=0的,不是=-1的

请各位高手教我一下为什么会这样
aaa.w3m (17 KB, 下载次数: 4)
发表于 2011-5-4 16:40:02 | 显示全部楼层
有没有可能,那个X初始值为-1?
回复

使用道具 举报

 楼主| 发表于 2011-5-4 16:42:08 | 显示全部楼层

回 1楼(lghdtc) 的帖子

没有呢,X初始值为0的。
回复

使用道具 举报

发表于 2011-5-4 17:40:12 | 显示全部楼层
和实数整数的转换有关
回复

使用道具 举报

 楼主| 发表于 2011-5-4 17:45:55 | 显示全部楼层

回 3楼(cynsw) 的帖子

我都觉得是,那应该是怎样弄啊?
回复

使用道具 举报

发表于 2011-5-4 18:39:12 | 显示全部楼层
要不设置x为1得了……
回复

使用道具 举报

 楼主| 发表于 2011-5-4 18:51:21 | 显示全部楼层

回 5楼(lo) 的帖子

这样可以!但是我想解释下为什么会得到这样的结果!当我设置A=money+(money×(1.00/100.00))就可以显示正常!为什么呢?
回复

使用道具 举报

发表于 2011-5-4 19:02:22 | 显示全部楼层
就是说转换实数和整数要收手续费了……没研究过……纠结……
回复

使用道具 举报

发表于 2011-5-4 19:07:54 | 显示全部楼层
魔兽不是四舍五入 我记得魔兽的实数转整数是直接删除小数点后面的数值。。
回复

使用道具 举报

发表于 2011-5-4 20:45:19 | 显示全部楼层
恩  不四舍五入的
回复

使用道具 举报

发表于 2011-5-5 03:18:05 | 显示全部楼层
上地图。
回复

使用道具 举报

 楼主| 发表于 2011-5-5 11:33:30 | 显示全部楼层
已经上地图了,求给位大侠可以帮一下我,解释一下为什么会这样。谢谢!
回复

使用道具 举报

发表于 2011-5-5 12:48:07 | 显示全部楼层
的确很诡异。。
[trigger]未命名触发器 004
    事件
        玩家 - 玩家1(红色) 按下Esc键
    条件
    动作
        设置 A = 1010.00
        设置 X = (X + (转换 A 为整数))
        游戏 - 对 玩家1(红色) 在屏幕位移(0.00,0.00)处显示文本: (转换 X 为字符串)
[/trigger]
直接这样做的时候什么问题都没有的说。。

可是按照楼主的方法
[trigger]未命名触发器 001
    事件
        时间 - 每 5.00 秒触发事件
    条件
    动作
        设置 A = ((转换 MONEY 为实数) x ((1.00 / 100.00) + 1.00))
        设置 X = (X + (转换 A 为整数))
        排行榜 - 设置 玩家1(红色) 在 (最后创建的排行榜) 中的分数为: X
[/trigger]
X却是1009
回复

使用道具 举报

 楼主| 发表于 2011-5-5 23:27:58 | 显示全部楼层
看来应该是编辑器的bug
回复

使用道具 举报

 楼主| 发表于 2011-5-6 09:59:11 | 显示全部楼层
没人回答这问题吗?
回复

使用道具 举报

发表于 2011-5-6 10:18:18 | 显示全部楼层
一般实数本就不可能做到百分百精确的吧,精度损失是很正常的
就像java里0.3-0.2的返回值是0.09999999999999998
回复

使用道具 举报

 楼主| 发表于 2011-5-6 10:26:40 | 显示全部楼层

回 15楼(zhuzeitou) 的帖子

但是图里面我做了两个触发,其实两个触发的理论上是一样的都是有实数,但是计算出来的结果却不同!
回复

使用道具 举报

发表于 2011-5-6 10:53:28 | 显示全部楼层
理应的事情和计算机实际计算的东西并不一样

还是拿java举例子
(int) (100.0 * (0.3 - 0.2))
(int) (100.0 * 0.3 - 100 * 0.2)
上面这两行的结果你认为一样吗?很可惜,结果第一个是9,第二个是10

而且,像这种定死的1.0/100.0+1.0直接写成1.01不可以么?
回复

使用道具 举报

发表于 2011-5-6 11:19:50 | 显示全部楼层
没想到猪头大人还懂JAVA  膜拜之
回复

使用道具 举报

发表于 2011-5-6 11:26:26 | 显示全部楼层
我是学软件的唉……
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-29 17:28 , Processed in 0.108379 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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