如果我有一个等于 8675309 的 int,将其转换为等于 0.8675309f 的浮点数的最佳/最快方法是什么?
输入整数:8675309
输出为浮点数:0.8675309
输入整数:4234512
输出为浮点数:0.4234512
输入整数:56
输出为浮点数:0.56
输入整数:123456
输出为浮点数:0.123456
输入整数:654321
输出为浮点数:0.654321
本题的目标是创建一个与随机生成的整数等价的小数。
虽然这些回答试图通过尝试评估它的用途来提供帮助,看看是否有更好/更快的方法来解决我正在实施的问题,但重点是找出整体解决方案我自己并将我获得的结果(使用接受的答案)与其他已知的“均匀分布”rng 解决方案进行比较。
tldr;并不是每个人都希望预先获得完整的解决方案。有时,准确回答所要求的内容就是解决方案,即使操作员还需要其他东西。
编辑:每个要求更多信息的人都看不到森林中的一棵树,我的回答除了说“你没有回答我的问题,它不能”之外,并没有对对话产生任何重大影响。不要更清楚我要问什么”,这没有丝毫帮助。为了稍微澄清这个问题,我删除了问题中不必要的混乱,并澄清了原始问题的目标。
10^(number of digits)
int input = 8675309;
int numDigits = (int)Math.Ceiling(Math.Log10(input));
然后除以 10^numDigits
:
float result = input / MathF.Pow(10, numDigits);