在 C++ 中从 %f 中删除前导和尾随零
Removing leading and trailing zeros from %f in C++
从使用 %f 的 C++ 字符串格式化程序中删除前导零和尾随零的最佳方法是什么。
有一个类似的问题 Avoid trailing zeroes in printf() 但只是说要使用 %g 格式化程序。
%g 格式化程序将 600000000009 输出为 6e+11
我只想从 %f 中删除前导和尾随零
例如:
- 000.001 -> 0.001
- 00.100 -> 0.100
- .10 -> 0.1
- 2.0 -> 2
任何 thoughts/suggestions 欢迎。
谢谢
在大多数情况下适用的动态格式只是
%.15g
这意味着 最多 15 位精度。
更好的方法是从 15 位开始,然后检查 atof(result)
是否与输入相同,增加位数直到匹配。
直接使用最大位数可能不是一个好主意,因为例如 0.1
使用 18 位进行格式化会使用户看起来很奇怪。
从使用 %f 的 C++ 字符串格式化程序中删除前导零和尾随零的最佳方法是什么。 有一个类似的问题 Avoid trailing zeroes in printf() 但只是说要使用 %g 格式化程序。
%g 格式化程序将 600000000009 输出为 6e+11
我只想从 %f 中删除前导和尾随零 例如:
- 000.001 -> 0.001
- 00.100 -> 0.100
- .10 -> 0.1
- 2.0 -> 2
任何 thoughts/suggestions 欢迎。 谢谢
在大多数情况下适用的动态格式只是
%.15g
这意味着 最多 15 位精度。
更好的方法是从 15 位开始,然后检查 atof(result)
是否与输入相同,增加位数直到匹配。
直接使用最大位数可能不是一个好主意,因为例如 0.1
使用 18 位进行格式化会使用户看起来很奇怪。