我有一个存储在文本文件中的双值对角矩阵。
size(file)~410 Mo
我想通过舍入我的 double 值来减小大小。
如果这是一个好主意,如何在java中做到这一点
0.1706524958886193=>0.17
我需要稍后在 matlab 中使用这个文件
当我尝试
dlmread(file) 我内存不足错误
如果您将值四舍五入,则会丢弃精度。这可能会改变您将获得的结果。
更好的方法是只存储对角线项目。存储 n^2-n 个非对角线零是没有意义的。使用 diag 函数将向量转换为对角矩阵。http://www.mathworks.es/es/help/matlab/ref/diag.html
更高效:以二进制格式而不是文本存储数字。
使用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);
}
}
希望这可以帮助...
除非我误解了这个问题,否则你可以这样做:
double value = 0.1706524958886193;
value = (double)((int)(value*100))/100; // returns 0.17