在C ++中从%f中删除前导零和尾随零

时间:2015-07-20 17:18:41

标签: c++ regex floating-point string-formatting

从使用%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

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

1 个答案:

答案 0 :(得分:1)

在大多数情况下有效的动态格式只是

%.15g

表示最高 15位精度。

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

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