给定一个完整的浮点数,Rust在将其转换为字符串时不包括任何小数.我想要一种在不设置固定精度的情况下保留.0的方法,因为我喜欢带有小数(playground)的数字的默认格式:

fn main() {
    println!("{}", 1.0);
    println!("{}", 1.1999999);
    println!("{:.1}", 1.0);
    println!("{:.1}", 1.999999)
}
1
1.1999999
1.0
2.0

因此,我希望能够打印额外的.0,而不会影响其他任何内容.

推荐答案

保留额外的.0的一种方法是使用Debug格式化程序,以区分它与整数:

println!("{:?}", 1.0);
println!("{:?}", 1.1999999);
1.0
1.1999999

我看不到使用精度格式说明符来规定这种行为的方法,因为提供精度将其用作"精确"精度,而如果不使用精度,则内部将分别为DisplayDebug使用"最小"精度01.(source)

Rust相关问答推荐

在Rust中,有没有一种方法让我定义两个 struct ,其中两个都遵循标准 struct ?

值为可变对象的不可变HashMap

从Type::new()调用函数

替换可变引用中的字符串会泄漏内存吗?

如果包名称与bin名称相同,并且main.ars位于工作区的同一 crate 中,则无法添加对lib.ars的依赖

如何使用Actix Web for Rust高效地为大文件服务

在复制类型中使用std::ptr::WRITE_VILAR进行内部可变性的安全性(即没有UnSafeCell)

使用启用优化的 alloc 会导致非法指令崩溃

我们可以在 Rust 切片中使用步骤吗?

为什么我们有两种方法来包含 serde_derive?

将多维数组转换为切片

如何在Rust中使用Serde创建一个自定义的反序列化器来处理带有内部标记的枚举

在多核嵌入式 Rust 中,我可以使用静态 mut 进行单向数据共享吗?

在 Rust 中,为什么整数溢出有时会导致编译错误或运行时错误?

如何创建递归borrow 其父/创建者的 struct ?

无法把握借来的价值不够长寿,请解释

RAII 模式的 Rust 解决方案,用于在 new() 和 drop() 上修改另一个对象

Rust 内联 asm 中的向量寄存器:不能将 `Simd` 类型的值用于内联汇编

`if let` 只是另一种编写其他 `if` 语句的方式吗?

返回 &str 但不是 String 时,borrow 时间比预期长