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的话同理