3

この Aslsx エクスポートで分割が機能しない理由を、一生理解できません。足し算、引き算、掛け算、モジュラス除算をうまく行うことができますが、やろうとするanswer_number / question_numberと常に0として出てきます.私が間違っていることは何ですか?

answer_number時代を吐き出す作品question_number

@survey.questions.each do |question|
        question_number = Choice.where(question_id: question.id).length
        question.answers.each do |answer|
            answer_number = Choice.where(answer_id: answer.id).length
            sheet.add_row [answer_number, question_number, answer_number * question_number]
        end
    end

動作しません - 吐き出します 0:

@survey.questions.each do |question|
        question_number = Choice.where(question_id: question.id).length
        question.answers.each do |answer|
            answer_number = Choice.where(answer_id: answer.id).length
            sheet.add_row [answer_number, question_number, answer_number / question_number]
        end
    end

また、数値が 0 未満のときに何らかの切り捨てを行っているのではないかと考えましたが、これも機能していないようです (最終的な目標は、選択された各回答の割合を取得することです)。

@survey.questions.each do |question|
        question_number = Choice.where(question_id: question.id).length
        question.answers.each do |answer|
            answer_number = Choice.where(answer_id: answer.id).length
            sheet.add_row [answer_number, question_number, answer_number / question_number * 100]
        end
    end
4

1 に答える 1

6

両方の数値が整数であるため、ルビーは残りの分数を無視する整数除算を行っています。すべての除算が 0 と 1 の間の数値を返していると思います。したがって、両方の数値のいずれかが@mtmが提案したようにfloatto_fで、いずれかの数値に関数を追加します

于 2014-09-10T14:58:19.010 に答える