如何在 Rust 中格式化浮点数而不带尾随零?

Har*_*son 5 rust

我的格式是f64这样的:

format!("{:.8}", x)
Run Code Online (Sandbox Code Playgroud)

这会返回如下字符串:

110.00000000
601.47000000
4.50000000
Run Code Online (Sandbox Code Playgroud)

我希望删除每个末尾的所有额外零,以便输出如下:

110
601.47
4.5
Run Code Online (Sandbox Code Playgroud)

我希望在没有任何外部板条箱或库的情况下做到这一点(虽然如果必须发生的话也没什么大不了的)。Rust 是否有内置的东西可以实现这一点?或者我必须编写一个自定义函数才能做到这一点?

编辑:

我应该补充一点,我不能简单地做到这一点,format("{}", x)因为这将返回如下字符串:

40.019999999999996
1192.6499999999999
2733.9599999999996
Run Code Online (Sandbox Code Playgroud)

有办法解决这个问题吗?

Har*_*son 2

目前这为我解决了这个问题:

let y = (x * 100_000_000.0).round() / 100_000_000.0;
format!("{}", y);
Run Code Online (Sandbox Code Playgroud)

我会密切关注任何更好的解决方案。谢谢你!