gpt4 book ai didi

c# - 提取 double 的小数系数

转载 作者:太空狗 更新时间:2023-10-30 00:47:48 26 4
gpt4 key购买 nike

数字 170 可以表示为规范化形式:
1,7作为小数系数
+2 作为以 10 为底的指数。

170 = 1,7 × 10+2

有没有办法用数学方法提取“分数系数”?不使用字符串表示。

var testInputs = 
new double[] {
1.7E+1, // 17
1.7E+2, // 170
1.7E+3, // 1700

-1.7E+1, // -17
-1.7E+2, // -170
-1.7E+3, // -1700

1.7E-1, // 0,17
1.7E-2, // 0,017
1.7E-3, // 0,0017

-1.7E-1, // -0,17
-1.7E-2, // -0,017
-1.7E-3, // -0,0017
};

这些测试的分数系数的绝对值为:1,7。

Nb: , 是小数点分隔符。

最佳答案

编辑:初始版本不适用于 (-1<x<1)

如果我的查询正确...

var X = -1.7; 
var Y = (decimal)X/(decimal)(Math.Pow(10, (int)Math.Log10(Math.Abs(X))-(X<1 && X > -1?1:0)))

测试:

var inputs = new[] { 1700,170,17,1.7,0.17,0.017,0.0017,
-1700, -170, -17, -1.7, -0.17, -0.017, -0.0017 };

decimal GetFractional(decimal X) =>
(decimal)X/(decimal)(Math.Pow(10, (int)Math.Log10(Math.Abs(X))-(X<1 && X > -1?1:0)));

foreach (var x in inputs)
{
WriteLine($"{x,7}\t\t{GetFractional(x)}");
}

结果:

1700        1,7
170 1,7
17 1,7
1,7 1,7
0,17 1,7
0,017 1,7
0,0017 1,7
-1700 -1,7
-170 -1,7
-17 -1,7
-1,7 -1,7
-0,17 -1,7
-0,017 -1,7
-0,0017 -1,7

关于c# - 提取 double 的小数系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54985971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com