当前位置:  开发笔记 > 编程语言 > 正文

如何将数字的后3位数转换为0

如何解决《如何将数字的后3位数转换为0》经验,为你挑选了2个好方法。

如何将数字的后3位数转换为0

例如3444678到3444000

我可以这样做

(int)(3444678/1000)*1000 = 3444000

但划分和乘法可能代价高昂......

任何其他解决方案????



1> Jesse Beder..:

你可以试试

n - (n % 1000)

但模数运算符可能与分区一样昂贵.无论如何,这听起来很像微优化.这真的是你的瓶颈吗?



2> Artelius..:

转移技巧,然后:

n >>= 3;
n -= n % (5 * 5 * 5);
n <<= 3;

它更快吗?疑.

但这是一个有趣的事实:gcc不使用除法/模数:

n -= n % 1000;

它乘以一些疯狂的数字(274877907)并做一些其他可能更快的东西.

这个故事的寓意:代码对编译器的目的越明显,编译器就越有可能以你从未想到的方式对其进行优化.如果代码更易于人类理解,那就是另一个奖励.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有