如何从lua中的字符串中删除点

Ank*_*shi 2 lua

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

242.701000393 = 242701000393
Run Code Online (Sandbox Code Playgroud)

我尝试过下面的代码,在某些情况下工作正常。

string.gsub("242.701000393", "%.", "")
Run Code Online (Sandbox Code Playgroud)

同样,我已经尝试过上述功能100999212.707000393。但它不起作用。

我是 lua 的新手。我想在每种情况下都从字符串中删除 .(dot) 。

分享你的想法,因为我不知道如何实现它。

按照我的逻辑如下所示

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

如果可能的话分享它的解决方案。

提前致谢。

代码 :

local destination_number =100999212.707000393
destination_number = string.gsub(destination_number, "%.", "")
print(destination_number)
Run Code Online (Sandbox Code Playgroud)

输出 :100999212707

预期输出:100999212707000393

mks*_*eve 5

问题是数字 - 浮点舍入的准确性,而不是 gsub 的功能。

local destination_number =100999212.707000393
print(destination_number, type(destination_number) )
destination_number = string.gsub(destination_number, "%.", "")
print(destination_number,type(destination_number))
Run Code Online (Sandbox Code Playgroud)

输出

100999212.707   number
100999212707    string
Run Code Online (Sandbox Code Playgroud)

相比 ...

local destination_number = "100999212.707000393"
print(destination_number, type(destination_number) )
destination_number = string.gsub(destination_number, "%.", "")
print(destination_number,type(destination_number))
Run Code Online (Sandbox Code Playgroud)

输出

100999212.707000393     string
100999212707000393      string
Run Code Online (Sandbox Code Playgroud)

浮点双精度数的精度约为 15 位,这意味着393在生成数字时会丢失 。当转换为字符串时,它已经消失了。

15 位数字非常准确,通常足以满足大多数用途,但如果这对您来说还不够,您将需要考虑替代数据表示形式。