rust - 在 Rust 中将 u64 乘以 u128 时出错?
问题描述
我想将 u128 数字与 u64 数字相乘。u64 将始终小于或等于一。金额始终大于 1000000(100 万)
fn testing(amount:u128, starting_time:u64, ending_time:u64, duration:u64){
return amount*((ending_time - starting_time:u64)/duration)
}
即使该数字应该返回 500,000 之类的值,它也总是返回零,除非((ending_time - starting_time:u64)/duration)
等于 1,然后返回值总是等于。
如果某人最后进入彩票,我想给他们更少的权重。开始时间和结束时间都是 u64,因为它们是 UNIX 时间戳。
示例:假设 Alice 在时间 0 进入彩票。同时开始彩票。因此,Alice 将获得她存入金额的全部权重,假设她存入 30000,因此她将获得 30000 张门票。
Bob 在抽奖中途进入抽奖意味着无论他存入什么,他都将获得存入金额的一半权重。如果他存入 30000,他将获得 15000 张门票。
解决方案
我找到的最佳解决方案是:
(amount/1000000) * (( ((end_time - start_time)*1000000 )/duration ) as u128)
推荐阅读
- php - 为什么我的删除按钮在 PHP 中不起作用?
- python - 提高 Pandas 转换过程的效率
- javascript - 如何在 react-native 中将高度设置为 100%?
- java - CodingBat starOut,为什么使用子字符串不能正常工作
- kubernetes - 将本地文件复制到 aks 高级或标准存储
- python - 用 CSV 文件中的文本和整数值为汽车数据训练价格预测机器学习模型的最佳方法是什么?
- react-native - 使用 react-native-svg 时执行 UI 块时引发异常
- select - PySpark DataFrame 何时使用/不使用 Select
- ruby - gem 是否使用空格记录无法识别的选项?
- android - 如何在 Android Studio 中正确读取浮点特性