【发布时间】:2018-07-20 22:27:22
【问题描述】:
关闭
我正在尝试将数字转换为熟悉的格式,例如,1000 会变成 1k 等等。我希望它上升到我已经尝试完成的 qn 区域,而我遇到的问题是当我尝试将数字四舍五入到最接近的第一位数字时。
例如,59127327 可以变成 60000000,我可以 tostring 和 gsub 该值60M
所以我实际上正在寻找的是一种算法,可以将所有数字 AFTER 第一个数字更改为 0,同时保持整数的位数。
示例: 100000 -> 100k
我正在开发一款 roblox 游戏,资金必须转换为我上面提到的熟悉的格式。谢谢!
【问题讨论】:
-
您真的需要基于字符串的解决方案吗?对于第一部分,
math.pow(10,math.floor(math.log10(number)))之类的东西可以工作,对数也可以用来解决第二部分。问题,问题的第二部分应该如何表示 1582? 1K 还是 1582 还是 1.582K ? -
我不需要基于字符串的解决方案,我应该说我对字符串解决方案很好。非常感谢,我会尝试解决方案,它必须像 1953 到 1.9k
-
如果它以您想要的方式工作,后代自己发布选择的解决方案会很有趣,并接受答案如果没有更好的答案,比如说两个天 - 这就是 SO 的工作方式。我宁愿不自己发布它,因为我对 Lua 的了解不足以产生一个惯用的解决方案。
-
我明白了,谢谢你,因为你的解决方案给了我更多的想法。希望我可以自己解决这个问题,但任何其他贡献者也可以帮助我解决这个问题。
-
顺便说一句,您所做的最后一次编辑有影响:
math.floor应该变成math.round。但是以对数工作的 oldskool 是要走的路 :) 祝你好运!
标签: design-patterns lua integer digits roblox