如何将积分和小数部分转回 f32?

Min*_*ipe 0 floating-point rust

所以我有一个数字,比如说4.2,我可以像这样提取整数和小数部分:

let value = 4.3;
let integral = f32::trunc(value);
let fractional = get_frac(value); // returns '3'
Run Code Online (Sandbox Code Playgroud)

这返回了正确的东西,但我怎么能把它变成一个 f32?我将这些存储为整数,然后仅在以后需要将它们转换回浮点数。

是我如何进行转换

Sve*_*ach 7

您的函数get_frac()本质上不能反转,因为它将不同的小数部分映射到相同的整数值。对于4.24.02,返回值get_frac()都是 2。仅凭结果无法判断您从哪个原始值开始。

更好的方法是决定要在浮点数的整数表示中包含多少位数字。如果您想包括四位十进制数字,只需将您的数字乘以 10,000 并四舍五入为整数。再次除以 10,000 可以近似反转此操作。