如何删除前导 0 并将剩余值除以 100,在 C# 中的整数和小数部分之间使用点分隔符

How to remove the leading 0s and divide the remaining value by 100, use a dot separator between the integer and the decimal part in C#

例如,假设我有一个:

var 值 = "0000000000002022"

我怎样才能得到:20.22

通过使用转换

Int16.Parse(value);
Convert.ToDecimal(int1)/100;

从数学上讲,无论你的数字前面有多少个零,它们都是一样的,所以 0000002 = 2 是正确的。我们可以使用这个事实来简单地将我们的字符串解析为一个数字,然后进行除法,但是我们必须小心我们使用的数字类型,因为 (int) 16 / (int) 5 将导致 3 ,这显然是不正确的,但整数除法可以做到这一点。所以,为了确保我们不会失去任何精度,我们将使用 float

string value = "0000000000002022";
if (float.TryParse(value, out var number))
{
    // Successfully parsed our string to a float
    Console.WriteLine(number / 100);
}
else
{
    // We failed to parse our string to a float :(
    Console.WriteLine($"Could not parse '{value}' to a float");
}

始终使用 TryParse,除非您 110% 确定给定的字符串将始终是数字,即使那样,情况也可能(并且将会,毕竟这是软件开发)发生变化。

注意:float不是无限大,它有最大值和最小值,超出该范围的任何东西都不能用浮点数表示。另外,浮点数也有一个警告:它们不是 100% 准确的,例如 0.1 + 0.2 == 0.3 是错误的,您可以阅读更多关于主题 here 的内容。如果您需要尽可能准确,例如在处理金钱时,则可以使用 decimal 代替(或者,决定将金钱表示为整数,代表您所在国家/地区使用的次要货币单位)