是否有任何JavaScript解释器可以处理非常大的数字?
可能的重复项:是否有任何JavaScript解释器可以处理非常大的数字?,javascript,bignum,Javascript,Bignum,可能的重复项: 我只是写了一些代码来解决一个问题 我一直 未捕获的语法错误:意外标记非法 我在代码中看不到语法错误 我用的数字是1000位数。我在Chrome的控制台上运行 Number.MAX_VALUE > 731671765313306249192251196744265747423553491949349698352031277450632623957831801698480186947885184385861560789112949495459501737958331952
我只是写了一些代码来解决一个问题 我一直 未捕获的语法错误:意外标记非法 我在代码中看不到语法错误 我用的数字是1000位数。我在Chrome的控制台上运行
Number.MAX_VALUE > 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
并且得到了false
。糟糕透了
有可以运行我的代码的解释器吗
这是代码,如果需要的话
var num = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450.toString();
var max = 0,
length = num.length;
for (var i = 0; i < length; i++) {
var consecTotal = 1,
limit = i + 5;
for (var j = i; j < limit; j++) {
consecTotal *= parseInt(num.substr(j, 1), 10);
}
max = Math.max(max, consecTotal);
}
console.log(max);
var num=7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111093705544217506941658960408071984038509624554443681230987892724428490988845801566609791338754200524063689912560717606058611641090741002256915520005593577297257163626956188267042825248360082375304202963450.toString();
var max=0,
长度=num.length;
对于(变量i=0;i
问题是找到5个连续数的乘积的最大数。我不会逐字逐句地打出来,因为我认为欧拉项目不赞成把答案发布到网上(我甚至不确定我的答案是否可行)
我转向JavaScript,因为我不确定如何设置
int
来处理C中的数字。听起来像是在寻找一个大的num类。似乎有一个用于,如果你想在C中使用它,你可以使用。来实际解释未捕获的语法错误:意外标记非法
这实际上是因为
...20752963450.toString();
^-------- ...the dot after a number is treated as a decimal point
Therefore this doesn't make sense.
But if you add a space in front of the dot, then it will work because
now JavaScript uses it to access the toString() method.
12323 .toString() // this will work as you'd expect it to if you come from Ruby or the like
但是,如果您添加空格num
将是无穷大。因此,对于BigNum实现,您必须查看awoodland的答案。首先,如果要将num变量用作字符串,它应该是正确的字符串文字。这就是你看起来在做的。我从未见过您尝试在那里使用的符号,我无法在Chrome或IE中使用它。只需使用:
var num = '73167176531330....';
其次,您的内部循环永远不会终止。j将始终小于j+5。你是说j
第三,你需要使你的外环只达到i
如果我做了这些改变,我会得到一个答案。我不知道这是否是您所寻求的答案。谢谢,我根本没有意识到这一点+1+1,因为我没能发现那个问题!你也可以使用(123).toString()
或123.0.toString()
@Josh,但()
看起来有点多余,.0
对我来说很奇怪。虽然不知道这个问题的人可能会去掉这三个问题中的任何一个,因为他们认为这是多余的/一个输入错误。200+'
是一个很好的解决方案吗?内部循环代码已经更新了。看起来在我发布第二个问题之前,你对代码做了一些修改。:)我认为当我使用parseInt()
时,超限并不重要。未定义的应转换为0
。这将使等式为0,这很好,因为这些数字都不符合要求。@Alex即使它确实产生0,我也习惯于寻找fencepost错误,这就是我提到它的原因。干杯@乔希:还有,@roatinha,我甚至没有在他的代码片段中注意到这一点!