rust - 如何将积分和小数部分转回 f32?
问题描述
所以我有一个数字,比如说4.2
,我可以像这样提取整数和小数部分:
let value = 4.3;
let integral = f32::trunc(value);
let fractional = get_frac(value); // returns '3'
这会返回正确的东西,但我怎样才能把它变成一个f32
?我将它们存储为整数,然后仅在以后需要将它们转换回浮点数。
这是我进行转换的方式
解决方案
您的函数get_frac()
本质上不能反转,因为它将不同的小数部分映射到相同的整数值。对于4.2
和4.02
, 的返回值get_frac()
都是 2。仅从结果中无法判断您从哪个原始值开始。
更好的方法是确定要在浮点数的整数表示中包含多少位。例如,如果您想包含四位十进制数字,只需将您的数字乘以 10,000 并四舍五入为整数。通过再次除以 10,000 可以近似地反转此操作。
推荐阅读
- azure - 表单识别器“错误”:[“第 1 页:文档无效或超出页面/大小限制。”]
- electron - 在 .asar 之外存储 css 图形
- machine-learning - 点云空间变换网络中卷积算子的选择
- r - 计算R中两列中有多少值相同
- bash - 有没有办法分析数据包间隔以每秒输出 # 个数据包?
- python - 从python中的属性文件中读取文件名
- node.js - getaddrinfo EAI_AGAIN 帐户-d.docusign.com 帐户-d.docusign.com:443
- swiftui - 如何在 SwiftUI 或无限列表视图中实现列表分页?
- excel - Excel 冻结窗格和不可见网格线设置未保存
- r - R中的随机子空间方法