0

Ruby と Latex をいじって、レジスターの色分けセットを作成しました。次のコードブロックがあります。これを実行しようとすると、band1=1e+02.

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 まで正しいです。

4

1 に答える 1

0

コードでband1は、 である必要がありFixnumます。で確認してくださいp band1.class。"1e+02" を取得する方法がわからない場合は、奇妙な方法で印刷するか、Rubyband1 == 1e+02でどちらを返すかを確認してください。と を区別するためにtrue使用する必要があります。eql?11.0

1 ==   1.0  # => true
1.eql?(1.0) # => false
于 2012-11-07T05:40:18.997 に答える