现在我(角色名16380)的头上戴着一个增加29%移动速度的头颅
头颅的指令
我输入了
复制代码输出0.29d
接着我输入了
复制代码输出28
什么情况……


测试时Amount的值从0.0d到0.29d 只有0.29d异常输出28 其他都是正常的
0.39d也会正常输出39
鬼知道我是怎么发现这个的
BugMJ?
头颅的指令
我输入了
- /data get entity @s Inventory[{Slot:103b}].tag.AttributeModifiers[{AttributeName:"generic.movementSpeed"}].Amount
接着我输入了
- /data get entity @s Inventory[{Slot:103b}].tag.AttributeModifiers[{AttributeName:"generic.movementSpeed"}].Amount 100
什么情况……


测试时Amount的值从0.0d到0.29d 只有0.29d异常输出28 其他都是正常的
0.39d也会正常输出39
BugMJ?
我试了下,
0.29
乘以1是0
乘以10是2
乘以100是28
乘以101是29
乘以1000是290
总结:BUGMOJANG
0.29
乘以1是0
乘以10是2
乘以100是28
乘以101是29
乘以1000是290
总结:BUGMOJANG
本帖最后由 lirui11 于 2019-8-13 22:35 编辑
看来真的是BugMojang了…
不过我担心如果换成101的话会对我那个函数造成什么影响
算了直接单独处理吧^
不知道后面还有没有这样类似的bug数,一个不用穷举的函数也需要穷举bug数的这一天终于到来了
看来真的是BugMojang了…
不过我担心如果换成101的话会对我那个函数造成什么影响
算了直接单独处理吧^
lirui11 发表于 2019-8-13 22:32
看来真的是BugMojang了…
不过我担心如果换成101的话会对我那个函数造成什么影响
算了直接单独处理吧^
刚刚试了一圈好像就29
这并非 Mojang 的问题,而是浮点数的固有缺陷。有兴趣可以看这篇文章:https://zhuanlan.zhihu.com/p/28162086
不止 Java 如此,绝大多数编程语言都使用 IEEE 754 标准表示浮点数,都会有这个问题。例如你现在按 F12 打开浏览器的 Console,在里面输入 0.29 * 100 并回车,得到的也是 28.999999999999996。
而 Minecraft 命令系统会把 Double 或 Float 转换为 Int,即直接舍弃末位,所以最终结果为 28。
不止 Java 如此,绝大多数编程语言都使用 IEEE 754 标准表示浮点数,都会有这个问题。例如你现在按 F12 打开浏览器的 Console,在里面输入 0.29 * 100 并回车,得到的也是 28.999999999999996。
而 Minecraft 命令系统会把 Double 或 Float 转换为 Int,即直接舍弃末位,所以最终结果为 28。
FHC红石 发表于 2019-8-13 22:43
刚刚试了一圈好像就29
建议再试一试以下这些数
29
57
58
顺便,许多情况下,0.1+0.2==0.30000000000000004
有人特意做了一个网站http://0.30000000000000004.com/
列举了关于这个现象的许多情况。
浮点数就是这样的。要是不喜欢的话那就气死好了。
