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 输出大小的变化而变化。
我真的不知道为什么这里面没有足够的信息。在第一行中很清楚我到底想做什么。谁能比这更具体?
您在纸上执行此操作的方式是:
- 求8675309的位数
- 除以
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);
如果我有一个等于 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 输出大小的变化而变化。
我真的不知道为什么这里面没有足够的信息。在第一行中很清楚我到底想做什么。谁能比这更具体?
您在纸上执行此操作的方式是:
- 求8675309的位数
- 除以
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);