当存在诸如3.76的字符串值时,如何在这种情况下将其转换为int分值376。
我正在考虑使用sprintf删除点然后转换为int但无法解决语法问题。我该怎么做呢,这是最好的方式
答案 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”则不计。
最佳解决方案可能是首先将其转换为浮点数,然后乘以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