Lua中如何去除字符串中的点号

我想从字符串中去除点号。例如

242.701000393 = 242701000393

我尝试了下面的代码,对于某些情况下可以正常工作

string.gsub("242.701000393", "%.", "")

同样的,我尝试了上面的函数 100999212.707000393。但是它不能工作。

我是Lua的新手,我只想在任何情况下都从字符串中删除点(.)

请分享您的思路,因为我不知道如何实现它。

根据我的逻辑,如下所示

1.按点分割字符串并将其转换为数组 2.连接所有数组元素

如果可能,请分享解决方案

提前致谢

CODE:

local destination_number = 100999212.707000393
destination_number = string.gsub(destination_number, "%.", "")
print(destination_number)

输出:100999212707

预期输出:100999212707000393

点赞
用户5129715
用户5129715

问题在于数字的精度 - 浮点数四舍五入,而不是 gsub 的功能。

local destination_number =100999212.707000393
print(destination_number, type(destination_number) )
destination_number = string.gsub(destination_number, "%.", "")
print(destination_number,type(destination_number))

输出结果

100999212.707   number
100999212707    string

相比之下......

local destination_number = "100999212.707000393"
print(destination_number, type(destination_number) )
destination_number = string.gsub(destination_number, "%.", "")
print(destination_number,type(destination_number))

输出结果

100999212.707000393     string
100999212707000393      string

双精度浮点数大约有15位数字的精度,这意味着在生成数字时将“393”保留的精度已经丢失了。转换为字符串时,已经丢失了。

15位数字是相当准确的,通常足以满足大多数需求,但如果这不足以满足您的需求,您需要考虑替代数据表示方法。

2018-06-04 06:42:55