标题几乎可以自我解释。:)
1232 => 0
1231030 => 1
2000 => 3
34444400000 => 5
如果它适合int
/ long
,只需检查模10的数字是否为0并保留一个计数器:
long x = ...
if (x == 0) {
return 0;
}
int counter = 0;
while (x % 10 == 0) {
counter++;
x /= 10;
}
如果太大而无法容纳long
,请将其存储在a中String
并从最后一个字符开始计数零:
String s = ...
int counter = 0;
while(counter < s.length() && s.charAt(s.length() - 1 - counter) == '0') {
counter++;
}
问题内容: 我正在尝试计算阶乘产生的数字的尾随零(这意味着数字变得很大)。以下代码采用一个数字,计算该数字的阶乘,并计算尾随零。但是,当数字大约为25!时,numZeros将不起作用。 我并不担心这段代码的效率,并且我知道有多种方法可以使这段代码的效率更好。我要弄清楚的是为什么计数大于25的数字结尾的零!不管用。 有任何想法吗? 问题答案: 您的任务不是计算阶乘,而是计算零的数量。一个好的解决方案
我试图计算阶乘中尾随零的数量。 我认为尾随零的数量不正确。 使用计数(30)时,30中有7个尾随的0。然而,它正在返回6。
问题内容: 嗨,有人可以给我一个解释(也许是一个例子),我将如何使用PHP从数字中去除尾随零。 例如: 将变成: 我正在尝试去除零,以使其更具可读性。我尝试使用,但这也替换了数字内的零(doh)。 谢谢= D 问题答案: 忘记所有的rtrim和正则表达式,坐标是浮点数,应将其视为浮点数,只需在变量前面加上即可将其从字符串转换为浮点数: 输出: 实际的结果是浮点数,但由于HTTP协议而作为字符串传递
问题内容: 我有字符串(来自DB),其中可能包含数字值。如果它包含数值,我想删除尾随零,例如: ,仅适用于第一个,而不适用于第二个。 很多答案都指向使用,但是我得到的可能不是数字。因此,我认为更好的解决方案可能是通过Regex。 问题答案: 有可能: 我懒又傻,只是 使用相同的解决方案,而不是某些注释中提到的,以便于理解
问题内容: 我需要从去除尾随零沿。例如, 可以,但是在诸如此类的情况下,它会返回科学计数法, 在这种情况下,它返回。我需要在JSF中的自定义转换器中使用它,这对于最终用户可能很难看。那么,这样做的正确方法是什么? 问题答案: 用 我还没有进入JSF,但转换器可能看起来像这样: 然后在xhtml中:
我试图改进大数的阶乘计算的运行时间。 第一个简单循环和乘法的代码。 此函数的分析结果: 对于n=1000--总时间:0.001115 s for n=10000--总时间:0.035327 s 对于n=100000——总时间:3.77454 s。 从n=100000的测线仪中,我可以看到大部分时间都花在乘法步骤上,即“98.8” 因此,试图将阶乘乘法减少一半,对于偶数,因此进行了强度减少。 后半部