字符串到int货币格式

时间:2010-06-27 23:03:30

标签: ruby

当存在诸如3.76的字符串值时,如何在这种情况下将其转换为int分值376。

我正在考虑使用sprintf删除点然后转换为int但无法解决语法问题。我该怎么做呢,这是最好的方式

4 个答案:

答案 0 :(得分:2)

删除点非常简单:

cent.gsub!(/\./,"")

将删除该点。

要获取int,只需调用整数构造函数:

Integer(cent)

当然,您可以将这两项操作结合起来:

Integer(cent.gsub!(/\./,""))

答案 1 :(得分:0)

我假设你的意思是ANSI C并且有一个你希望转换成int的字符串值。

int cents =(atof(myString)* 100.0);

atof将字符串转换为double(或依赖于编译器和平台的float),然后乘以100将小数指针向右移动两步。

非常简单:)

答案 2 :(得分:0)

只有当你总是有两位小数时才能删除这个点,即“3.76”罚款,但“3.7”甚至“3”则不计。

  • “3.76”=> 376
  • “3.7”=> 37而不是370
  • “3”=> 3而不是300

最佳解决方案可能是首先将其转换为浮点数,然后乘以100,然后使用舍入将其转换为int。如果你可以有超过2位小数,你需要决定舍入方案。例如:

("3.76".to_f * 100.0).round

请注意converting from a float to an int using to_i isn't accurate,正如Clint在对此答案的评论中所提到的那样。

答案 3 :(得分:-1)

我认为这有点像红宝石而不是整数(分)和做奇怪的替换。

(cent * 100).to_i