Jama Matrix 用 Java 编写了一个类。班级是这样的
public Matrix (int m, int n, double s) {
this.m = m;
this.n = n;
A = new double[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
A[i][j] = s;
}
}
}
它可以创建一个 m*n 维度的矩阵,其数据类型为 double,这意味着在 point(.) 之后需要 6 位数字。但我需要一个矩阵,它可以在点后至少取 10 位数字(如 12.1234567890)。因此,经过搜索后,我发现 BigDecimal 数据类型可以采用这种类型的值。所以我稍微修改了一下之前的代码。
public Matrix(int m,int n,BigDecimal s){
this.m=m;
this.n=n;
A= new BigDecimal[m][n];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
A[i][j]=s;
}
}
}
但它会引发错误。 java中是否有其他用于浮点数的数据类型。
运行这段代码时我有点困惑
public class T {
public static void main(String args[]){
double a= 3.256147001235;
double b=4.200001258920;
double c=a+b;
System.out.println(c);
}
}
这里的数据类型也是 double 但输出是7.456148260155
。所以这里它需要这个大数,但在矩阵类中它不能接受这个大数。
Unlike double
or String
, BigDecimal
Java 编译器没有内置支持用文字构造对象。您需要使用构造函数或通过调用来构造它valueOf
,取决于数据源:
Matrix bigDecimalMatrix = new Matrix(100, 80, BigDecimal.valueOf(4.200001258920));
or
Matrix bigDecimalMatrix = new Matrix(100, 80, new BigDecimal("4.200001258920"));
相似地,BigDecimal
没有编译器支持运行算术运算。因此,代替
double c = a + b;
你需要写
BigDecimal c = a.add(b);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)