我需要能够将整数作为小数部分附加到另一个整数,例如:
对于数字12345
和12345678
,我希望得到:12345,12345678
注意:数字'长度是可变的。
我已经尝试将数字转换成字符串以测量它们的长度然后相应地划分它们但是必须有一种比这更有效和快速的方法。
答案 0 :(得分:4)
var left = 12345;
var right = 12345678;
var total = left + (right / Math.Pow(10, Math.Floor(Math.Log10(right)) + 1));
答案 1 :(得分:3)
一种非常快速和肮脏的方法,完全没有错误检查
var total = Double.Parse(string.Concat(left, ",", right));
答案 2 :(得分:2)
基于https://stackoverflow.com/a/2506541/1803777,可以在不使用对数函数的情况下获得更多性能。
public static decimal GetDivider(int i)
{
if (i < 10) return 10m;
if (i < 100) return 100m;
if (i < 1000) return 1000m;
if (i < 10000) return 10000m;
if (i < 100000) return 100000m;
if (i < 1000000) return 1000000m;
if (i < 10000000) return 10000000m;
if (i < 100000000) return 100000000m;
if (i < 1000000000) return 1000000000m;
throw new ArgumentOutOfRangeException();
}
int a = 12345;
int b = 12345678;
decimal x = a + b / GetDivider(b);
答案 3 :(得分:1)
尝试使用以下内容进行计数:
Math.Floor(Math.Log10(n) + 1);
然后就像你说的那样继续。
来源:How can I get a count of the total number of digits in a number?