我如何删除所有的尾零在一个长?
。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;
}