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