double类型保留几位小数(double和float的区别)

double类型可以保留几位小数?

下面是五种处理方法,使double类型的数据保留2位小数。

/*具体代码*/

import java.math.BigDecimal;

import java.math.RoundingMode;

import java.text.DecimalFormat;

public class Test {

double[] num = {3.4567, 3, 0.4567, 2343.333, 133, 3.1415};

public void func() {

int i = 1;

for(double d:num){

System.out.println(“测试”+(i++)+” = “+d);

String dstr = String.valueOf(d);

// 第一种:

java.text.DecimalFormat df = new java.text.DecimalFormat(“#.##”);

System.out.println(“第一种=”+df.format(d));

// 第二种:通过下面的结果可以看出,一二两种都可以,第一种如果小数部分是0的话就只显示整数,第二种始终显示两位小数

BigDecimal bd = new BigDecimal(dstr);

bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);

System.out.println(“第二种=”+bd);

// 第三种:

long l = Math.round(d * 100); // 四舍五入

double ret = l / 100.0; // 注意:使用 100.0 而不是 100

System.out.println(“第三种=”+ret);

// 第四种:

d = ((int) (d * 100)) / 100;

System.out.println(“第四种=”+d);

//第五种

DecimalFormat df2 = new DecimalFormat(“#.00”);

//df2.setRoundingMode(RoundingMode.HALF_UP);

System.out.println(“第五种=”+df2.format(d));

System.out.println(“————————-“);

}

}

public static void main(String[] args) {

Test t = new Test();

t.func();

}

}

运行结果:

测试1 = 3.4567

第一种=3.46

第二种=3.46

第三种=3.46

第四种=3.0

第五种=3.00

————————-

测试2 = 3.0

第一种=3

第二种=3.00

第三种=3.0

第四种=3.0

第五种=3.00

————————-

测试3 = 0.4567

第一种=0.46

第二种=0.46

第三种=0.46

第四种=0.0

第五种=.00

————————-

测试4 = 2343.333

第一种=2343.33

第二种=2343.33

第三种=2343.33

第四种=2343.0

第五种=2343.00

————————-

测试5 = 133.0

第一种=133

第二种=133.00

第三种=133.0

第四种=133.0

第五种=133.00

————————-

测试6 = 3.1415

第一种=3.14

第二种=3.14

第三种=3.14

第四种=3.0

第五种=3.00

————————-

matlab运行出错,“未定义与 double 类型的输入参数相对应的函数 INPUTSws10.”求大神指点

  • [Liner_temp,Casing_temp,New_Tannulus,old_Tannulus,eta_filmcooling,J,distance_downstream_slot,Outside_conv,Outside_rad,mm,qm]=INPUTSws10(ii);
  • INPUTSws10 你定义这个函数了么??

怎么样把double 类型转化为Integer类型

  • 强制类型转换比如int a = (int) b

c++中,基本数据类型有很多,为什么不全使用long double?

  • long double的取值范围最旦旦测秆爻飞诧时超江广,其它任何类型的取值都在long double内,为何还要那么麻烦搞那么多数据类型?
  • long double 运算时间长。另外,不同的数据类型,应用范围也不一旦旦测秆爻飞诧时超江样,不能用高射炮去打蚊子。

以下是用c语言编了个课后题,问数据类型声明由float变为double,为什么算出来的结果全是0?

  • #include stdio.hmain(){ float i=0,f=0; printf("输入利润:n"); scanf("%f",&i); if(i10) f=0.1*i; else if(i=10&&i20) f=1+0.075*(i-10); else if(i=20&&i40) f=1.75+0.05*(i-20); 筏怠摧干诋妨搓施掸渐else if(i=40&&i60) f=2.75+0.03*(i-40); else if(i=60&&i100) f=3.35+0.01*(i-60); printf("%5.2f",f);}为什么用double运行出来的全是0.00TAT
  • scanf(&q筏怠摧干诋妨搓施掸渐uot;%lf",&i);double输入要用%lf longfloat

c语言声明为double类型输出1.QUAN

  • 问题补充: #include stdio.hmain(){double a;scanf("%g", &a);printf("a is %gn", a);}这样为什么会输出1.QUAN?求解释
  • 在scanf函数的格式符中,"%g"是对应float型的,对应double型的要用"%lg"

c语言打印double类型

  • 我在一个循环中执行printf("%d %0.8fn",i,sum);如何让它输出 n e – ———– 0 1 1 2 2 2.5 3 2.666666667 4 2.708333333 …….而不是 ……… 0 1.00000000 1 20000000 2 2.5000000 3 2.666666667 4 2.708333333 …………就是说怎么知道它什么最低位都是0了,从而不将它打印出来??
  • printf("%d %.8gn",i,sum);

总是提示double和float类型不符,不知道是为什么,不应该是继承吗

  • class A{double f(float xfloat y){return x+y;}public int g(int xint y){return x+y;}}class B extends A{ float f(float xfloat y){return x+y;}}public class P113{public static void main(String arg[]){B b=new B();double result =b.f(56);System.out.println("调用重写方法得到的结果"+result);int m=b.g(35);System.out.println敞姬搬肯植厩邦询鲍墨("调用继承类得到的结果"+m);}}
  • 现在c++编器一般会把浮点常量默认为双精度的

如何将double转换成float类型

  • #include stdio.hint main (){ double d=1.1111; float f=(float)d; printf("f=%lf孩胆粉感莠啡疯拾弗浆,d=%lfn",f,d); return 0;}

c语言中定义数据类型时为什么将int改为double后数据运算错误

  • 题目是这样的:求(1+2+…+100)+(1^2+2^2+…+50^2)+(11+12+…110)编写程序如下:#includestdio.h#define M 100#define N 50#define P 10int main(){double i,m,n,p,s;for(i=1,m=0;i=M;i++){m=m+i;}for(i=1,n=0;i=N;i++){n=n+i*i;}for(i=1,p=0;i=P;i++){p=p+1i;}s=m+n+p;printf("s=%dn",s);return 0;}当时没有考虑到有小数,所以数据类型就用了int,精度查了一点几,但是后来将int改为double时,得到的结果是-1172594246,为什么会这样呢?
  • 您在最后输出时采用的是%d(int型),若改为和double型对应的%lf应该就可以了。

已知变量的类型说明如下:int m,n;double x=3.14; 一下合法的C语言表达式是?

  • A.m+=m-=(m=6.4)*(n=2)B.y=int(x)C.=5*n=2D.x%3 这些都是说明意思呢?为什么合法,为什么不合法,判断合法与否的因素是什么?谢谢问题补充: A.m+=m-=(m=6.4)*(n=2)B.y=int(x)C.m=5*n=2D.x%3
  • 看情况只能选A了,B的话没有y,属于未定义,C的话等号前面没有表达式,D的话同理