【发布时间】:2014-05-20 15:32:41
【问题描述】:
我想用大数做百分比(int64:600 851 475 143)
我的实际操作是
a = Math.round(i / 600851475143 * 100, 5);
我也是一个介于 1 和 600851475143 之间的 int64。如果我是对的,结果将在 0,00000% 和 100,00000% 之间。
但是 Visual Studio Express 2013 告诉我方法“System.Math.Round(decimal, int)”和“System.Math.Round(double, int)”之间的模糊调用。
如何对视觉说好的方法是 System.Math.Round(decimal, int) 即使一些 int64 在操作中?
奖金: 为了理解我的问题,我正在尝试解决 ProjectEuler.net 的问题 3: “13195 的质因数是 5、7、13 和 29。 数字 600851475143 的最大质因数是多少?"
我做了我的方法,它适用于 13195。但现在我必须使用 600851475143(在 x64 系统上),但我的算法似乎没有优化,我想添加一个百分比进度条来了解我的EXE 崩溃与否。我的变量是这个百分比...
我不想要 Euleur 问题 3 的答案,我只需要解决我的百分比问题...
【问题讨论】:
-
提示:任何数的最大素因数不能大于其平方根。 (你明白为什么吗?)所以当你得到那个数字的平方根时,你可以停止寻找因子;你不需要一直到号码本身。
-
还有一个额外的提示:一旦你找到了一个素数,你就可以将你的数字除以那个素数。然后,您只需搜索新的较小数字的平方根。
标签: c# double decimal rounding ambiguous