大家好,我正在处理关于javascript天文计算的文件,所以我需要更高的精度。我对每一行都有很多操作,我希望结果更精确(逗号后面的小数点也是10或20)。
在JavaScript中,如果我不声明十进制数(例如使用.ToFixed(n)),那么在计算过程中,语言在逗号之后有多少位置?
例如:
var a= 1.123456789*3.5; // result 3.9320987615
var b= a/0.321;
var c= b*a;
// c => 48.16635722800571
这将是结果?就像对javascript的每个变量使用所有十进制后的逗号,近似吗?。
在其他问题中
我试图理解为什么模块操作不能像预期的那样工作:
我需要验证一个IBAN,算法包括做一个模块。
根据维基百科:
3214282912345698765432161182 mod 97 =1
根据我的Windows计算器::3214282912345698765432161182 mod 97 =1
但是当我在JS上做的时候我得到了65:
var result = 3214282912345698765432161182 % 97;
console.log(result);
// result is 65
为什么我只有65岁而不是JS的1岁?
我已经使用Math.pow()在我的项目中计算了指数值。
现在,对于像Math.pow(3,40)这样的特定值,它返回12157665459056929000。
但是,当我使用科学计算器尝试相同的值时,它返回12157665459056928801。
然后我尝试遍历循环,直到得到指数值:
function calculateExpo(base,power){
base = parseInt(base);
power = parseInt(power);
var output = 1;
gameObj.OutPutString = ''; /
我尝试用JS编写Gauss-Legendre算法。我找到了here算法。 这是我写的代码: let ao = 1;
let bo = 1 / Math.sqrt(2);
let to = 1 / 4;
let po = 1;
let an;
let bn;
let tn;
let pn;
let pi;
for (let i = 0; i < 10; i++) {
an = (ao + bo) / 2;
bn = Math.sqrt(ao * bo);
tn = to - po * Math.pow(ao - an, 2);
感谢你们对静电的提示,感谢你们所有回答的人!现在感觉不那么沮丧了。
我不会在我的整个任务中一步一步地问问题,但我想确保这是下一步任务之一的方式。我已经编写了以下代码,它可以很好地编译(目的是检查字符串以确保它是数字,并且用户还可以将ISBN输入为带或不带破折号的数字):
private String validateISBN(String bookNum)
{
String[] book;
int j=0;
for ( int i=0;i<bookNum.length();i++)
if (character.isDig
当我使用输入1000000000000在Intellij上运行以下代码时,每800万个循环就有一个进程。
为什么是这样?为什么不一帆风顺地跑到最后?
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Please type a number");
long n = in.nextLong();
我们知道,使用Javascript日期构造函数的所有日期都以毫秒为单位计算,从1970年1月1日00:00:00世界时间(UTC)开始,一天包含86,400,000毫秒。这意味着JS使用UNIX时间戳。我将计时器设置为2038年以后的日期(例如2039年11月14日),并运行脚本:
<script>
var d = new Date();
alert(d.getFullYear()+" "+d.getMonth()+" "+d.getDate());
</script>
它成功地警告了2039 10
我注意到,当增加一个计数器时,当计数器的值是一个大的数字时,它会显着地慢下来。我在Chrome、火狐和IE11上都试过,它们的表现都很差。
请参见jsperf测试 (下面的代码):
var count1 = 0;
var count2 = new Date().getTime();
var count3 = 1e5;
var count4 = 1e9;
var count5 = 1e12;
var count6 = 1e15;
function getNum1() {
return ++count1;
}
function getNum2() {
return ++count2;
我尝试将值9234567891234567存储在Number Type SPListItem字段中。Sharepoint数字字段的基础C#类型为Double。
当我将9234567891234567赋给双C#变量时,它将保留9234567891234568。
SPListItem items = list.GetItemById(siteID);
var value = Convert.ToDouble("9234567891234567");
//pb is that value holds 9234567891234568.0
items[fieldName] = valu
在python中,我运行以下简单代码:
print('number is %.15f'%1.6)
它工作得很好(输出:number is 1.600000000000000),但是当我将小数位取到16>=时,我在末尾开始获得随机数。例如:
print('number is %.16f'%1.6)
输出:number is 1.6000000000000001和
print('number is %.20f'%1.6)
输出:number is 1.60000000000000008882
这与计算机计算数字的方式有关吗?
编辑:感谢所有的回
#include <stdlib.h>
#include <stdio.h>
struct node;
typedef struct node* PtrToNode;
struct node {
long long n;
PtrToNode next;
};
PtrToNode factorial(int n, PtrToNode init);
void multiply(long long n, PtrToNode init, long long carry);
int main() {
int n;
while (1) {
scanf