gpt4 book ai didi

c# - "Substring"一个数值

转载 作者:行者123 更新时间:2023-11-30 13:15:16 25 4
gpt4 key购买 nike

在 C# 中,什么是“子串”(缺少更好的词)长值的最佳方法。

我需要计算尾部记录的帐号总和,但只需要 16 个最低有效字符。

我可以通过将值转换为字符串来实现这一点,但我想知道是否有更好的方法可以做到这一点。

long number = 1234567890123456789L;
const long _MAX_LENGTH = 9999999999999999L;

if (number > _MAX_LENGTH)
{
string strNumber = number.ToString();
number = Convert.ToInt64(strNumber.Substring(strNumber.Length - 16));
}

这将返回值 4567890123456789。

最佳答案

你可以这样做:

long number = 1234567890123456789L;
long countSignificant = 16;
long leastSignificant = number % (long) Math.Pow(10, countSignificant);

这是如何运作的?好吧,如果你除以 10,你会去掉最后一位,对吧?余数将是最后一位? 100、1000 和 Math.Pow(1, n) 也是如此。

让我们只看最低有效数字,因为我们可以在脑海中做到这一点:

1234 divided by 10 is 123 remainder 4

在 C# 中,这将是:

1234 / 10 == 123;
1234 % 10 == 4;

所以,下一步就是弄清楚如何获取最后 n 个有效数字。事实证明,这与除以 10 的 n 次方相同。由于 c# 没有指数运算符(如 python 中的 **),我们使用库函数:

Math.Pow(10, 4) == 1000.0; // oops: a float!

我们需要将它转换回一个 long:

(long) Math.Pow(10, 4) == 1000;

我想现在你已经具备了创建自己的漂亮功能的所有要素 ;)

关于c# - "Substring"一个数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10547805/

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