必要时如何显示小数点?

时间:2017-02-10 08:00:54

标签: ruby-on-rails ruby ruby-on-rails-4

Html :(获取数据)

New hourly rate: <input type="number" name="rate" />

我尝试了两种方法来存储rate

Result.erb

rate= params[:rate].to_f # this works .But always show one decimal points ,like 90.5

rate= params[:rate] # String can't be coerced into Float --error

我希望它在必要时显示小数点,如34.5,45,23.2,33

如何改善?

1 个答案:

答案 0 :(得分:1)

首先让它统一是一件好事(您的to_f转化方法)。

但是如果你想将它转换为不同的类型(Float或Integer,取决于小数点存在),你可以这样做:

# check if params[:rate] converted to Float equals to converted to Integer
rate = if params[:rate].to_f == params[:rate].to_i
         params[:rate].to_i  # Return integer if yes
       else
         params[:rate].to_f  # Return float otherwise
       end

可以使用三元运算符编写短文:

rate = params[:rate].to_f == params[:rate].to_i ? params[:rate].to_i : params[:rate].to_f

params[:rate] = '2.2'
rate = params[:rate].to_f == params[:rate].to_i ? params[:rate].to_i : params[:rate].to_f
#=> 2.2
params[:rate] = '2'
rate = params[:rate].to_f == params[:rate].to_i ? params[:rate].to_i : params[:rate].to_f
#=> 2