C#中如何移动小数点

How do I shift the decimal point in C#

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

示例:


作为整数输入:8675309

输出为浮点数:0.8675309


作为整数输入:4234512

输出为浮点数:0.4234512


作为整数输入:56

输出为浮点数:0.56


作为整数输入:123456

输出为浮点数:0.123456


作为整数输入:654321

输出为浮点数:0.654321


我尝试将输出映射到 0 到 1 之间的值,但对于 RNG 设置,它的平均值往往为 0.64,这并不理想。

我已经使用了 Tanh、Cos、Sin 和其他函数来映射它,但似乎我真的只想得到开头有小数的确切数字,这样准确性保持不变。

我想我可以除以一个很大的数字,但它不会一致,因为数字的大小必须随着 RNG 输出大小的变化而变化。

我真的不知道为什么这里面没有足够的信息。在第一行中很清楚我到底想做什么。谁能比这更具体?

您在纸上执行此操作的方式是:

  1. 求8675309的位数
  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);