【问题标题】:Ruby Divide Always Returning Zero in Rails Axlsx ExportRuby Divide 在 Rails Axlsx 导出中始终返回零
【发布时间】:2014-11-04 06:37:19
【问题描述】:

我一生都无法弄清楚为什么在这个 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

【问题讨论】:

标签: ruby-on-rails axlsx


【解决方案1】:

由于两个数字都是整数,ruby 正在进行整数除法,它会忽略剩余的分数,我猜你所有的除法都返回 0 和 1 之间的数字,所以答案总是 0,以避免两个数字之一应该是一个浮点数,就像@mtm 建议的那样,将to_f 函数添加到任一数字

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多