【问题标题】:How to strip commas from float input?如何从浮点输入中去除逗号?
【发布时间】:2013-06-27 16:32:23
【问题描述】:

我有一个字段-

:Revenue

它应该接受像10,000.00 这样的值,但如果我输入这样的值,它会将10 存储到数据库中而不是10000.00

在保存之前我应该​​如何去除逗号?

我试图在网上找到一些解决方案,但由于我发现它们不完整而无法实施。如果有人可以帮助我,我将不胜感激。

**我现在面临的问题是,一旦我输入值,rails 就会在它可以运行 gsub 函数之前将字符串转换为浮点值,就像我输入 50,000.00 在调用 gsub 之前将其转换为浮点 50.0,有什么办法可以解决rails调用字符串的to_f方法。

【问题讨论】:

  • 那些incomplete 解决方案是什么?
  • 看看这是否有帮助。我认为这正是您想要做的,并且比我给出的答案更完整:stackoverflow.com/questions/6541209/…转到有 5 分的答案。

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

删除逗号非常简单:

value.gsub(/,/, '').to_f

请记住,欧洲格式通常使用逗号作为十进制值分隔符,因此如果处理这些类型的数字,您的结果将相差 100 倍。

【讨论】:

  • 除非你能保证至少有一个逗号,否则你不会想要使用 bang 方法,否则你的值会从 10,000.00 变为 0。
  • "NoMethodError Exception: undefined method `gsub' for 50.0:Float" 如果我​​输入类似 50,000.00 的内容
  • @HrishikeshSardar 如果你在浮点数上尝试这个,你已经完成了转换,为时已晚。也许您需要在将params 与模型链接之前对其进行处理?
  • 你知道在我将参数链接到数据库之前如何处理它吗?
  • 如果你有控制器的话。你没有提供任何代码,所以我只能猜测。
【解决方案2】:

您可以使用String#delete

"10,000,000.00".delete(',').to_f 
# => 10000000.0

【讨论】:

  • 这和gsub有同样的问题!如果你不能保证会有逗号,你会得到 0 而不是 1000 万。
  • 问题是只要输入 10,000.0 并点击提交,它就会将其转换为浮点数,因此它变为 10,我想在这种情况下使用 gsub 或在此之前删除
  • @vgoff 更改了帖子.. 感谢您的评论。
【解决方案3】:

在查看了几个地方并结合了几个解决方案后,我找到了解决方案,因为在必须完成与模型的链接之前我必须使用 gsub。所以我在我的控制器中创建了该方法并在创建和更新操作之前调用它。并在方法中写了如下代码

params[:record][:Revenue] = params[:record][:Revenue].gsub(/,/,"")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-17
    • 2020-07-24
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多