如何在 C# 中移动小数点[关闭]

问题描述 投票:0回答:1

如果我有一个等于 8675309 的 int,将其转换为等于 0.8675309f 的浮点数的最佳/最快方法是什么?

示例:


输入整数:8675309

输出为浮点数:0.8675309


输入整数:4234512

输出为浮点数:0.4234512


输入整数:56

输出为浮点数:0.56


输入整数:123456

输出为浮点数:0.123456


输入整数:654321

输出为浮点数:0.654321


本题的目标是创建一个与随机生成的整数等价的小数。

虽然这些回答试图通过尝试评估它的用途来提供帮助,看看是否有更好/更快的方法来解决我正在实施的问题,但重点是找出整体解决方案我自己并将我获得的结果(使用接受的答案)与其他已知的“均匀分布”rng 解决方案进行比较。

tldr;并不是每个人都希望预先获得完整的解决方案。有时,准确回答所要求的内容就是解决方案,即使操作员还需要其他东西。

编辑:每个要求更多信息的人都看不到森林中的一棵树,我的回答除了说“你没有回答我的问题,它不能”之外,并没有对对话产生任何重大影响。不要更清楚我要问什么”,这没有丝毫帮助。为了稍微澄清这个问题,我删除了问题中不必要的混乱,并澄清了原始问题的目标。

c# data-conversion
1个回答
3
投票
在纸上执行此操作的方法是:

    找出 8675309 中的位数
  1. 除以
  2. 10^(number of digits)
    
    
您可以通过将其格式化为字符串并计算字符数(不好),或者通过取以 10 为底的对数并将其向上舍入(好)来找到以 10 为基数编写时的位数:

int input = 8675309; int numDigits = (int)Math.Ceiling(Math.Log10(input));
然后除以 

10^numDigits

:

float result = input / MathF.Pow(10, numDigits);
    
© www.soinside.com 2019 - 2024. All rights reserved.