Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何将浮点转换为字符串?_Rust - Fatal编程技术网

Rust 如何将浮点转换为字符串?

Rust 如何将浮点转换为字符串?,rust,Rust,如何将浮点值转换为字符串?无论出于什么原因,我能找到的文档和所有在线资源都只涉及到另一方面 let value: f32 = 17.65; let value_as_str: String = ..... 有时候,答案很简单: 背景 “创建某物可读字符串表示”的基础是本模块中最重要的特点可能是显示是对类型的抽象,可以将其格式化为面向用户的字符串(几乎完全符合您的需要)。通常,Displaytrait被println!()和朋友们。所以,您已经可以使用格式将浮点值转换为字符串了!()宏: l

如何将浮点值转换为字符串?无论出于什么原因,我能找到的文档和所有在线资源都只涉及到另一方面

let value: f32 = 17.65;
let value_as_str: String = ..... 

有时候,答案很简单:


背景

“创建某物可读字符串表示”的基础是本模块中最重要的特点可能是<代码>显示是对类型的抽象,可以将其格式化为面向用户的字符串(几乎完全符合您的需要)。通常,

Display
trait被
println!()
和朋友们。所以,您已经可以使用
格式将浮点值转换为字符串了!()
宏:

let s = format!("{}", pi);
但还有另外一件事:那就是。此特性涉及可以转换为
字符串的类型。现在,有一个神奇的实现:

impl<T> ToString for T 
    where T: Display + ?Sized
这将产生一个在小数点后正好有两位的字符串(
“3.14”

如果要使用科学记数法将浮点转换为字符串,可以使用与(或)特征对应的
{:e}
(或
{:e}
)格式说明符


这将导致
“3.1415926e6”

,我打赌这是一个重复,但我找不到类似的问题。旁白:在C语言中,用
sprintf(buf,sizeof buf,“%.*e”,FLT_DECIMAL_DIG-1,some_float)将一个
浮点
打印成一个足够但位数不太多的字符串。我可以为你提供一些想法。实际上我不知道C的
FLT\u DECIMAL
,所以谢谢你。C++与<>代码STD::tox字符串相比更为出色;我在rust中寻找类似的东西。请注意,
std::to_string
使用固定的(非指数表示法),它倾向于将小的
float
转换为“0.000000”和带有过多数字的非常大的值。我想知道
.to_string()
是否也这样做?我在我的答案中添加了一些示例,说明如何使用小数点后的固定数字进行格式化,以及如何使用指数表示法进行格式化。谢谢,我会尽快接受你的答案。为什么这不在f32的文档中@菲利普路德维希一世补充了一大堆解释。我希望这澄清了事实:)这确实澄清了情况。非常感谢你的努力!有时候,答案很简单。但是,例如
(1e-300).to_string()
的输出是非常意外的,并且与许多其他语言中字符串化浮动的工作方式不同。实际上,获得了一条人性化的字符串。
impl<T> ToString for T 
    where T: Display + ?Sized
let s = format!("{:.2}", pi);
let s = format!("{:e}", pi * 1_000_000.0);