如何格式化一个浮点数而不在Rust中拖尾零?

如何格式化一个浮点数而不在Rust中拖尾零?,rust,Rust,我正在格式化f64如下: format!("{:.8}", x) 110.00000000 601.47000000 4.50000000 40.019999999999996 1192.6499999999999 2733.9599999999996 这将返回如下字符串: format!("{:.8}", x) 110.00000000 601.47000000 4.50000000 40.019999999999996 1192.6499999999999 2733.9599999

我正在格式化
f64
如下:

format!("{:.8}", x)
110.00000000
601.47000000
4.50000000
40.019999999999996
1192.6499999999999
2733.9599999999996
这将返回如下字符串:

format!("{:.8}", x)
110.00000000
601.47000000
4.50000000
40.019999999999996
1192.6499999999999
2733.9599999999996
我希望删除每个末尾的所有额外零,以便输出如下:

110
601.47
4.5
我希望在没有任何外部板条箱或图书馆的情况下做到这一点(如果必须这样做,那也没什么大不了的)。有没有什么内在的东西可以实现这一点?或者我必须编写一个自定义函数才能这样做

编辑:

我应该补充一点,我不能简单地执行
格式化(“{}”,x)
,因为这将返回如下字符串:

format!("{:.8}", x)
110.00000000
601.47000000
4.50000000
40.019999999999996
1192.6499999999999
2733.9599999999996
有办法吗?

你可以这样做

格式!(“{}”,x)
{.8}
需要8个精度位置,因此,打印出额外的零以达到该精度。

这目前为我解决了:

设y=(x*100\u 000.0).round()/100\u 000.0;
格式!(“{}”,y);

我会留意任何更好的解决办法。谢谢大家!

不完全是我想要的,因为它返回如下字符串:56.74000000000001 8.940000000000001 89.63000000000001 103.429999999998这看起来像是浮点不精确的自然事实,您只需选择何时足够接近,以便进行取整。