从使用%f的C++字符串格式化程序中删除前导零和尾随零的最佳方法是什么。
有一个类似的问题Avoid trailing zeroes in printf(),但只是说要使用%g格式化程序。

%g格式化程序将输出60​​0000000009作为6e + 11

我只想从%f中删除开头和结尾的零
例如:

  • 000.001-> 0.001
  • 00.100-> 0.100
  • .10-> 0.1
  • 2.0-> 2

  • 欢迎任何想法/建议。
    谢谢。

    最佳答案

    在大多数情况下可以使用的动态格式仅仅是

    %.15g
    

    这意味着的精度最高为 15位数字。

    更好的方法是从15位数字开始,然后检查atof(result)是否与输入相同,递增数字位数直到匹配为止。

    直接使用最大位数可能是个坏主意,因为使用18位数字格式化0.1这样的格式会带来对用户来说很奇怪的表示形式。

    10-08 17:10