Tag: 十进制

Rails:更改params中属性的值

我有一个输入( price )的表单,用户填写的值如: 12,50或110,90 (法国价格)。 所以在控制器中我做: @quote = current_user.company.quotes.build!(params[:quote]) 问题是rails使用US方式的小数表示行为。 因此它以12.00或111.90的价格保存报价 那么如何告诉rails实际考虑欧洲版的小数? 谢谢。 UPDATE 解决方案是将此方法添加到Quote模型中。 def price=(data) write_attribute(:price, data.to_s.gsub(‘,’, ‘.’)) end 这将取代,用. 。 感谢Olivier提示。

在Ruby on Rails表单中输入数字时的小数和逗号

在表单中输入数字时,允许用户使用小数或逗号的最佳Ruby / Rails方法是什么? 换句话说,我希望用户能够在我的数据库中输入2,000.99而不是2.00。 这是最好的做法吗? – 更新— gsub可以与浮点数或大整数一起使用吗? 或者,当将浮动或整体输入表格时,轨道会自动切断数字吗? 我尝试使用self.price.gsub(“,”,“”)但得到“未定义的方法`gsub’为8:Fixnum”,其中8是我在表单中输入的任何数字。

如何将Rational数字格式化为十进制?

给定具有有限十进制表示的任意大(或小) Rational ,例如: r = Rational(1, 2**15) #=> (1/32768) 如何将其完整十进制值作为字符串? 上述数字的预期输出为: “0.000030517578125” to_f显然不起作用: r.to_f #=> 3.0517578125e-05 并且sprintf要求我指定位数: sprintf(‘%.30f’, r) #=> “0.000030517578125000000000000000”

Rails:如何以百分比forms打印小数?

有没有办法以百分比forms打印小数,所以只有两位数后? 我的小数将始终在1和0之间,所以我认为从第三个字符开始调用number.round(2)是有效的,但是我无法在任何地方找到它的语法。 为了澄清,我希望将数字存储为完整小数 ,但打印为百分比 。

Ruby / Rails – 如何validation小数位?

如何validation小数的比例? 例如,假设我们想要存储小数点后最多2个小数点的酒店的评级。 4.34。 3.76。 等等 我已经在线阅读了基于你与列绑定的精度/比例的截断的sqlite。 因此,如果你有一个精度3,比例2,并输入1.34567 1.35将被存储。 但是,我正在使用postgres而事实并非如此。 我输入了这个,尽管我的精确度为3,但数据库仍以某种方式存储了全部内容。 t.decimal :my_column, precision: 3, scale: 2 那么,我如何validation这种事情,为什么postgres存储超过2个小数点开始?