从使用%f的C++字符串格式化程序中删除前导零和尾随零的最佳方法是什么。
有一个类似的问题Avoid trailing zeroes in printf(),但只是说要使用%g格式化程序。
%g格式化程序将输出600000000009作为6e + 11
我只想从%f中删除开头和结尾的零
例如:
欢迎任何想法/建议。
谢谢。
最佳答案
在大多数情况下可以使用的动态格式仅仅是
%.15g
这意味着的精度最高为 15位数字。
更好的方法是从15位数字开始,然后检查
atof(result)
是否与输入相同,递增数字位数直到匹配为止。直接使用最大位数可能是个坏主意,因为使用18位数字格式化
0.1
这样的格式会带来对用户来说很奇怪的表示形式。