如何删除前导 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
代替(或者,决定将金钱表示为整数,代表您所在国家/地区使用的次要货币单位)
例如,假设我有一个:
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
代替(或者,决定将金钱表示为整数,代表您所在国家/地区使用的次要货币单位)