如何格式化浮点数以保留最多3位小数并省略末尾的零?
浮点数格式化需求与实现方案
我需要格式化浮点数,要求最多保留3位小数,小数部分末尾的零需自动省略。示例如下:
input : expected output 1.1234 : 1.123 1.120 : 1.12 1.100 : 1.1 1.0 : 1
只需要基于标准C风格字符串格式化(比如%.3f)实现即可,编程语言不限。我自己给出的解决方案如下:
方案一
function formatShortFloat(value as Float) as String { var str = value.format("%.3f"); var chars = str.toCharArray(); var end; for (end = str.length() - 1; chars[end] == '0' && end > 0; --end) { } if (chars[end] == '.') { --end; } return str.substring(0, end + 1) as String; }
方案二
(注:这是Monkey C代码,该语言没有更简便的字符串字符访问方式,因此我希望了解不限语言的实现,甚至伪代码均可)
function formatShortFloat(value as Float) as String { var str = value.format("%.3f"); var end = str.length(); var lastChar; do { lastChar = str.substring(end - 1, end); --end; } while ("0".equals(lastChar)); if (".".equals(lastChar)) { --end; } return str.substring(0, end + 1) as String; }
内容的提问来源于stack exchange,提问作者Gavriel
相关产品推荐
相关产品推荐

