为什么我的除法运算符一直返回零?
Why does my division operator keep returning a zero?
当我打印 "chances" 的结果时,它保持 returning 值为“0”。我不确定这是否与我使用 rand 运算符有关。我该如何解决这个问题,使其 return 成为实际值而不是 0?
p1Health = rand(50..100).to_i
p1Attack = rand(25..50).to_i
p1Overall = (p1Health + p1Attack).to_i
p2Health = rand(50..100).to_i
p2Attack = rand(25..50).to_i
p2Overall = (p2Health + p2Attack).to_i
p1p2 = p1Overall + p2Overall
chances = p1Overall / (p1Overall + p2Overall)
计算 chances
时,您正在进行整数除法,这会将 return 结果四舍五入为最接近的整数。在这种情况下,您看到 0
是因为您的结果是一个百分比(因为它小于 1,所以它在整数除法中向下舍入为 0)。
到 return 实际值,您需要将其中一个整数转换为 Float
,如下所示:
chances = p1Overall / (p1Overall + p2Overall).to_f
希望对您有所帮助!
在 Ruby 中,一个整数除以一个整数得到一个整数结果。即:
1 / 2
# => 0
其中 0
是最接近的整数答案。不同之处在于:
5 / 2
# => 2
基本上是 2.5 四舍五入为 2。
如果你想要一个浮点数结果:
chances = p1overall.to_f / (p1overall + p2overall)
其中 .to_f
首先转换为浮点数。结果产生了一个浮点数答案。
在大多数语言中(c、c++、java、ruby、python ..etc)integer/integer
产生 integer
结果。
您必须至少使用一个值作为浮点数。
这是许多语言使用的基本约定:
操作执行于:
integer + integer => integer
integer - integer => integer
integer / integer => integer
integer * integer => integer
float + integer => float
integer + float => float
float / integer => float
integer / float => float
当我打印 "chances" 的结果时,它保持 returning 值为“0”。我不确定这是否与我使用 rand 运算符有关。我该如何解决这个问题,使其 return 成为实际值而不是 0?
p1Health = rand(50..100).to_i
p1Attack = rand(25..50).to_i
p1Overall = (p1Health + p1Attack).to_i
p2Health = rand(50..100).to_i
p2Attack = rand(25..50).to_i
p2Overall = (p2Health + p2Attack).to_i
p1p2 = p1Overall + p2Overall
chances = p1Overall / (p1Overall + p2Overall)
计算 chances
时,您正在进行整数除法,这会将 return 结果四舍五入为最接近的整数。在这种情况下,您看到 0
是因为您的结果是一个百分比(因为它小于 1,所以它在整数除法中向下舍入为 0)。
到 return 实际值,您需要将其中一个整数转换为 Float
,如下所示:
chances = p1Overall / (p1Overall + p2Overall).to_f
希望对您有所帮助!
在 Ruby 中,一个整数除以一个整数得到一个整数结果。即:
1 / 2
# => 0
其中 0
是最接近的整数答案。不同之处在于:
5 / 2
# => 2
基本上是 2.5 四舍五入为 2。
如果你想要一个浮点数结果:
chances = p1overall.to_f / (p1overall + p2overall)
其中 .to_f
首先转换为浮点数。结果产生了一个浮点数答案。
在大多数语言中(c、c++、java、ruby、python ..etc)integer/integer
产生 integer
结果。
您必须至少使用一个值作为浮点数。
这是许多语言使用的基本约定:
操作执行于:
integer + integer => integer
integer - integer => integer
integer / integer => integer
integer * integer => integer
float + integer => float
integer + float => float
float / integer => float
integer / float => float