java中double类型数组保留小数点后位数问题!!!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中double类型数组保留小数点后位数问题!!!!!相关的知识,希望对你有一定的参考价值。

double Vp[][] = new double [10][10];
定义一个double类型的数组!
经过一些计算,的出的每个结果小数点后都有10多位,我只想保留5位,其他的4设5入,怎么写?
别人教我了一种方法:
import java.text.DecimalFormat
DecimalFormat df = new DecimalFormat("0.000");
String num = "";
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
num+=df.format(Vp[x][y]);

可是这样输出以后每个数字和每个数字是连在一起的!我加空格或者逗号num+=df.format(Vp[x][y]+" ,");就有异常!
有没有别的方法解决这个问题?

import java.text.DecimalFormat
DecimalFormat df = new DecimalFormat("0.000");
double num=0.000;
for(int i=0;i<9;i++)
for(int j=0;j<9;j++)
num+=Double.parseDouble(df.format(Vp[x][y]));


字符串相加当然数字是连在一起的,把字符串转换为double型Double.parseDouble(字符串),字符串num修改为double型.
就OK了!
参考技术A import java.text.DecimalFormat;
DecimalFormat df1 = new DecimalFormat("0.00000");
System.out.println(df1.format(789.123456789456));
参考技术B import
java.text.DecimalFormat
DecimalFormat
df
=
new
DecimalFormat("0.000");
double
num=0.000;
for(int
i=0;i<9;i++)

for(int
j=0;j<9;j++)

num+=Double.parseDouble(df.format(Vp[x][y]));

字符串相加当然数字是连在一起的,把字符串转换为double型Double.parseDouble(字符串),字符串num修改为double型.
就OK了!

double类型,小数点后的位数

我有一个double类型的数据
Cstring aStr;
double a=1234.567890;
aStr.Format("%f",a);
SetDlgItemText(IDC_a,aStr);
输出结果是:
1234.567890
我希望输出1234.57,也就是保留两位并且四舍五入。
怎么办到?

double类型是双精度浮点数,占用8字节(Byte)即64位(bit),其精度是由32个bit的二进制尾数来确定的,因此准确精度是二进制精度而不是十进制精度,通常可以保证十进制小数点后15位有效精度和第16位的部分精度。

通过格式化方法输出double类型,可以控制小数点后的显示位数:aStr.Format("%.2f",a);在百分号后面加上.x 就是指定小数点后的显示位数。注意这种方法不是四舍五入,而是截断显示,1.239会显示为1.23;

如果需要四舍五入,在C/C++中没有专门的函数,你可以这样实现:aStr.Format("%.2f",a+0.005);再舍去位加上5,再截断的时候就等于是四舍五入了。

拓展资料:

Visual Basic 支持几种 Numeric 数据类型— Integer(整型)、Long(长整型)、Single(单精度浮点型)、Double(双精度浮点型)和 Currency(货币型)。与 Variant 类型相比,Numeric 类型占用的存储空间通常要少。

如果知道变量总是存放整数(如 12 )而不是带小数点的数字(如 3.57),就应当将它声明为 Integer 类型或 Long 类型。整数的运算速度较快,而且比其它数据类型占据的内存要少。在 For...Next 循环内作为计数器变量使用时,整数类型尤为有用。

如果变量包含小数,则可将它们声明为 Single、Double 或 Currency 变量。Currency 数据类型支持小数点右面 4 位和小数点左面 15 位;它是一个精确的定点数据类型,适用于货币计算。浮点(Single 和 Double)数比 Currency 的有效范围大得多,但有可能产生小的进位误差。

浮点数值可表示为 mmmEeee 或 mmmDeee ,其中 mmm 是假数,而 eee 是指数(以 10 为底的幂)。Single 数据类型的最大正数值为 3.402823E+38,或 3.4 乘以 10 的 38 次方;Double 数据类型的最大正数值是 1.79769313486232D+308 或 1.8 乘以 10 的 308 次方。用 D 将数值文字中的假数部分和指数部分隔开,就会导致将该值作为 Double 数据类型来处理。同样,用这种方式使用 E,也会导致将该值作为 Single 数据类型来处理。

参考资料:数据类型 百度百科

参考技术A

Cstring aStr;

double a=1234.567890;

aStr.Format("%2f",a);

SetDlgItemText(IDC_a,aStr); 

将输出改为%2lf,即保留小数点后两位

拓展资料

双精度浮点型,此数据类型与单精度数据类型(float)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,是double float数据类型,C/C++中表示实型变量的一种变量类型。

此数据类型与单精度数据类型(float)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,通常情况,单精度浮点数占4字节(32位)内存空间,其数值范围为-3.4E38~3.4E+38,;双精度型占8 个字节(64位)内存空间,其数值范围为-1.7E308~+1.7E308。

参考资料:双精度浮点型-百度百科

参考技术B double类型是双精度浮点数,占用8字节(Byte)即64位(bit),其精度是由32个bit的二进制尾数来确定的,因此准确精度是二进制精度而不是十进制精度,通常可以保证十进制小数点后15位有效精度和第16位的部分精度。

通过格式化方法输出double类型,可以控制小数点后的显示位数:
aStr.Format("%.2f",a);

在百分号后面加上.x 就是指定小数点后的显示位数。注意这种方法不是四舍五入,而是截断显示,1.239会显示为1.23
如果需要四舍五入,在C/C++中没有专门的函数,你可以这样实现:
aStr.Format("%.2f",a+0.005);

在舍去位加上5,再截断的时候就等于是四舍五入了。
参考技术C 把aStr.Format("%f",a);
换成aStr.Format("%.2f",a); 保留两位小数就行了本回答被提问者采纳
参考技术D printf("%.2f",a+0.005); //这就是保留两位小数的四舍五入

以上是关于java中double类型数组保留小数点后位数问题!!!!!的主要内容,如果未能解决你的问题,请参考以下文章

java double保留小数点的零的问题

[Java]对double变量进行四舍五入,并保留小数点后位数

Java中Double类型设置指定保留小数点位数的方式

java两个数相除后保留两位小数 (四舍五入),并且结果大于三位数要有千位分隔符,不是整数时,小数点前三

Java 数据格式化&小数点后保留指定位数

java中double变量保留小数问题