所以我尝试使用BigDecimal,它给我的欧拉数值最多为50个小数点。但是由于约束值很高,数字可以从1到10^6000,因此我没有得到任何精度(使其最优化是另一个问题)。这里是代码块:我想你问如何计算欧拉数(即e
)以更高的精度有什么办法可以得到欧拉数和整数的乘积之和,整数的范围可以达到10^6000?
for(int i=1; i<n+1; i++){
// i is the integer value and bd is the value of the euler's number, so below i am multiplying the value of i with the euler's number
BigDecimal x = BigDecimal.valueOf(i).multiply(bd);
//Here i am taking floor of the above calculated value
x.setScale(0, RoundingMode.HALF_UP);
//and here sum is floor[1*euler's no] + floor[2*euler's number] + ... + floor[n*euler's number]
sum += x.intValue();
}
什么是'sum'?您可能还需要制作一个BigDecimal。 – lucasvw
代码片断表明您想总结10^6000个数字:祝您好运。 – Henry
我首先想建议使用公式'(n *(n + 1)/ 2)',并将其与bd *乘以一次*,然后截断,但是这并没有考虑到您需要添加地板值,所以1 * e会变成2,2 * e变成5,给出7的小计等,而3 * e变成8,给出1的误差。恐怕你必须循环。 –