Rust 为什么f32不实现std::fmt::Binary?

Rust 为什么f32不实现std::fmt::Binary?,rust,Rust,我尝试以二进制格式显示一个f32: let value: f32 = 0.45; let my_string = format!("{:b}", value); 我得到以下错误:“trait绑定的f32:std::fmt::Binary不满足” 我认为,当我们想要将f32的二进制表示形式转换成字符串时,我们必须自己实现这个特性。事实上,Rust不知道如何处理一些无法用二进制表示的f32值

我尝试以二进制格式显示一个
f32

let value: f32 = 0.45;                                                      
let my_string = format!("{:b}", value);
我得到以下错误:“trait绑定的
f32:std::fmt::Binary
不满足”


我认为,当我们想要将
f32
的二进制表示形式转换成
字符串时,我们必须自己实现这个特性。事实上,Rust不知道如何处理一些无法用二进制表示的
f32
值。例如,如何处理
0.1
?trait是否应返回字符串
0.00011
0.000110011
?这就是为什么没有定义f32的
std::fmt::Binary
的原因吗?

请注意,OP问的是为什么,而不是如何。“整数是如何以二进制打印的。@Shepmaster,我认为另一个问题是转换到基础位模式,而不是将浮点值格式化为文本,以基数2表示。@FlorianWeimer说得对!然而,OP仍然在问为什么,所以任何答案都必须说明这一点。通常,这些类型的问题依赖于一个或多个Rust开发人员的内部知识,因此永远无法回答。然而,我的错误增加了一个潜在的原因:因为有多种不兼容的解析“将此值打印为二进制”的方法。我认为没有任何根本原因。它只是没有实现,因为它不是很有用。我不知道有什么语言能实现它,明白了。谢谢你的回复。