从使用%f的C++字符串格式化程序中删除前导和尾随零的最佳方法是什么。还有一个类似的问题,Avoid trailing zeroes in printf(),但它只要求使用%g格式化程序。
%g格式化程序将输出600000000009作为6e+11
我只想从%f _g中移除前导和尾随零:
欢迎任何想法/建议。谢谢。
发布于 2015-07-20 17:23:50
在大多数情况下有效的动态格式只是
%.15g这意味着可以达到 15位的精度。
一种更好的方法是从15位开始,检查atof(result)是否与输入相同,增加数字的数量,直到匹配为止。
直接使用最大位数可能是个坏主意,因为格式化(例如,使用18位数字的0.1 )会给用户带来一个看起来很奇怪的表示。
https://stackoverflow.com/questions/31522505
复制相似问题