如何在long中去掉末尾的0

  • 本文关键字:long c++
  • 更新时间 :
  • 英文 :


我如何删除所有的尾零在一个长?

。450000000至45,2100至21

所有的数都是正的,如果有区别的话

在modulo 10的帮助下,您可以这样做

void removeTrailingZeros(long& n)
{   while (n % 10 == 0)    n /= 10;  }

首先需要更精确地定义后面的零。在十进制表示中,"尾随零">表示"可被10整除">。(类似地,您可以考虑二进制可被2整除,十六进制可被16整除。)当数被10整除后余数(取模(%)运算的结果)为零时,该数可被10整除。在这种意义上,要从数字中"修剪尾随零">,您将根据需要将该数字除以所需的基数多次,直到它不再被基数整除。

uint64_t trim_zeros(uint64_t number, const uint64_t base = 10) {
if (number == 0) return 0;  // or maybe throw something
while (number % base == 0) number /= base;
return number;
}

最新更新