0

我有一个存储在文本文件中的双值对角矩阵。

size(file)~410 Mo

我想通过舍入我的 double 值来减小大小。

如果这是一个好主意,如何在java中做到这一点

0.1706524958886193=>0.17

我需要稍后在 matlab 中使用这个文件

当我尝试

dlmread(file) 我内存不足错误

4

3 回答 3

5

如果您将值四舍五入,则会丢弃精度。这可能会改变您将获得的结果。

更好的方法是只存储对角线项目。存储 n^2-n 个非对角线零是没有意义的。使用 diag 函数将向量转换为对角矩阵。http://www.mathworks.es/es/help/matlab/ref/diag.html

更高效:以二进制格式而不是文本存储数字。

于 2013-06-06T17:53:39.703 回答
2

使用DecimalFormat类根据您的需要格式化double值。例如,如果您只想保留小数点后 2 位使用,"#0.00依此类推。DecimalFormat#format类返回String可用于实例化Double值的输出。从

import java.text.DecimalFormat;
public class Tester
{
  public static void main(String arg[]) throws Throwable
  {
    double bigDouble=0.1706524958886193;
    DecimalFormat df=new DecimalFormat("#0.00");
    String numberString=df.format(bigDouble);
    double smallDouble=new Double(numberString);
    System.out.println(smallDouble);
  }
}

希望这可以帮助...

于 2013-06-06T17:41:33.217 回答
0

除非我误解了这个问题,否则你可以这样做:

double value = 0.1706524958886193;
value = (double)((int)(value*100))/100; // returns 0.17
于 2013-06-06T17:43:20.103 回答