0
我正在玩弄Ruby和Latex来为一个registor创建一个颜色编码集。我有以下代码块。当试图运行此,band1
= 1e+02.
for循环的迭代次数计算
我试图band1
= (BigDecimal(i) * 100).to_f
,想可能有一些奇怪的浮点运算问题。整数乘以整数应该创建一个整数。我尝试了各种其他的东西,但无济于事。
(1..9).each do |i| #Band 1
(0..9).each do |j| #Band 2
(0..11).each do |k| #Band 3
#Band 3 Start
#these are the colors of the resistor bands
b1 = $c_band12[i]
b2 = $c_band12[j]
b3 = $c_band3[k]
b4 = "Gold"
oms = ((i*100) + (j*10)) * $mult[k]
band1 = i*100
band2 = j
band3 = $mult[k]
end
end
end
不知道我错过了什么。我应该在这些迭代中使用each_with_index
吗?我试过这个:
(1..9).each_with_index {|i, indexi| #Band 1
(0..9).each_with_index {|j, indexj| #Band 2
(0..11).each_with_index {|k, indexk| #Band 3
#Band 3 Start
#these are the colors of the resistor bands
b1 = $c_band12[i]
b2 = $c_band12[j]
b3 = $c_band3[k]
b4 = "Gold"
oms = ((i*100) + (j*10)) * $mult[k]
band1 = indexk * 100
我得到了同样的答案。我不明白为什么1*100
应该等同于这么大的数字。
编辑:附加信息:如果我有:band1=i*10
那么计算是正确的。实际上,计算正确率最高为99.
。但是,我的值是一个整数(无小数),并且乘以100并不能达到我的预期。 我期望1 * 100等于100,我收到1 * 100 = 1e + 02(第一次迭代) – user1805035
Oups,误读您的问题。下次保持严格的最低限度;它也会帮助你更好地理解。 –
没有问题 - 是的,我看到band1应该是Fixnum(不能完全记住为什么,我相信变量赋值并不重要)。 不知道我怎么得到这个值。可能LaTeX正在转录它。 – user1805035