小编Sin*_*ion的帖子

如何处理浮点舍入错误

我正在尝试用Java实现游戏的基本2D矢量数学函数.它们将被游戏密集使用,所以我希望它们尽可能快.

我开始用整数作为矢量坐标,因为游戏对坐标不需要更精确,但是对于所有计算,我仍然需要改变为双向量以获得清晰的结果(例如,两条线之间的交点).

使用双打,有舍入错误.我可以简单地忽略它们并使用类似的东西

d1 - d2 <=  0.0001
Run Code Online (Sandbox Code Playgroud)

比较值,但我假设进一步的计算误差可以总结,直到它变得重要.所以我认为我可以在每次可能不精确的操作之后绕过它们,但结果却产生了更糟糕的结果,因为该程序还会舍入不正确的值(例如0.33333333...- > 0.3333300...).

使用BigDecimal会太慢.

解决这个问题的最佳方法是什么?

java floating-point precision floating-accuracy

2
推荐指数
1
解决办法
401
查看次数

Ruby 多线程的奇怪行为

我正在尝试了解 Ruby 多线程,但它似乎很混乱。这是我尝试过的几个例子:

  1. 线程永远不会被执行并且程序结束
Thread.new do
  puts "thread"
end

puts "main"
Run Code Online (Sandbox Code Playgroud)
  1. 线程被执行但永不终止
thread = Thread.new do
  puts "thread"
end

sleep while thread.alive?

puts "main"
Run Code Online (Sandbox Code Playgroud)
  1. 一切都出乎意料地按预期工作:
thread = Thread.new do
  puts "thread"
end

puts thread.status while thread.alive?

puts "main"
Run Code Online (Sandbox Code Playgroud)

以马茨的名义在这里发生了什么?!

ruby multithreading

2
推荐指数
1
解决办法
33
查看次数