将小数部分附加到整数上

本文关键字:整数 小数部 | 更新日期: 2023-09-27 18:07:20

我需要能够将一个整数作为十进制部分附加到另一个整数上,例如:

对于数字1234512345678,我想得到:12345,12345678

注意:数字的长度是可变的。

我试过将数字转换为字符串来测量它们的长度,然后相应地划分它们,但必须有一个比这更有效和快速的方法。

将小数部分附加到整数上

var left = 12345;
var right = 12345678;
var total = left + (right / Math.Pow(10, Math.Floor(Math.Log10(right)) + 1));

一种非常快速和肮脏的方法,根本没有错误检查

var total = Double.Parse(string.Concat(left, ",", right));

基于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);

尝试使用以下方法计数:

Math.Floor(Math.Log10(n) + 1);

然后按照你说的继续。

来源:我如何得到一个数字的总位数的计数?