double类型是否可用移位符>>? 本人运行时出错,请大家指点一下F:\>javac a.javaa.java:6: 运算符 << 不能应用于 double,intb=(b<<1); ^1 错误 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么要加()我不明白???b=b<<1;不就可以了吗???不能应用于 double,int 不可能double,int一起不能用,楼主你把源码贴出来吧!!! << 是左移运算符,原则上可以进行左移操作的只能是整数,能转换为2进制,而double的类型无法直接转换成2进制,除非是强制转为整形 public class a{public static void main(String[] s){double b=21.345;b=((int)(b<<2))>>2;System.out.println(b); }}本意是想保留小数点后2位有效数字的 double类型不能使用位运算。位运算只能用于byte short char int long 类型也就是说位运算只能应用在整型中。上面中的(b<<2)这个表达式是错误的,因为b不是整型。 b=((int)(b<<2))>>2;很明显需要把b先转成整形才可以,改成b=((int)b<<2)>>2;这样就没有问题 移位运算符是按二进制位来进行移位的,并不是按十进制位来移位的。要保留两位小数不能这样做,可以试着用用下面的方法。public class Test { public static void main(String[] args) { double b = 21.345; System.out.println(round(b, 2)); } public static double round(double num, int digit) { if(digit < 1) { return num; } long n = pow10(digit); return ((long)Math.round(num * n)) / (double)n; } private static long pow10(int exponent) { long result = 1L; while(exponent-- > 0) { result *= 10L; } return result; }} 本意是想保留小数点后2位有效数字的有那么复杂吗?double d = 123.456;d = 1.0*((long)(d*100))/100;这样就行了。 double不能使用移位运算符。保留指定数目的小数可以使用System.out.printf() double d = 123.456; d = (int)(d*100)/100.0; 保留两位小数,书上标准范例 小弟出来乍到。我想可以使用java.text.DecimalFormat类。 double d = 123.456; d = 1.0 * ((long)(d * 100))/100;d = (long)(d * 100)/100.0 同理d * 100 值是:12345.6;(long)(d * 100) 值是:12345;1.0 * (long)(d * 100) 值是12345(double类型);1.0 * ((long)(d * 100)) / 100; 值是123.45; java 求最短路径 求助CronTrigger的CronExpression问题 请教JavaScript常用开发技巧以及调试方法 JavaBean中的类之间怎样相互调用? 《爱着我的三个女人……》 java 中的延时函数是什么? 给Aoch起个名字 请问如何用applet的Socket编程传递一个文件? 请教:如何动态构建一个类的事例??(今天结账谢谢2002-7-31) 新手请教 数据库连接池讨论 C3P0 or dbcp or proxool or .................散分讨论 怎么样讲.java文件弄成.exe可执行文件
不能应用于 double,int 不可能double,int一起不能用,楼主你把源码贴出来吧!!!
{
public static void main(String[] s)
{
double b=21.345;
b=((int)(b<<2))>>2;
System.out.println(b);
}
}
本意是想保留小数点后2位有效数字的
位运算只能用于byte short char int long 类型
也就是说位运算只能应用在整型中。
上面中的(b<<2)这个表达式是错误的,因为b不是整型。
很明显需要把b先转成整形才可以,改成
b=((int)b<<2)>>2;
这样就没有问题
double b = 21.345;
System.out.println(round(b, 2));
} public static double round(double num, int digit) {
if(digit < 1) {
return num;
}
long n = pow10(digit);
return ((long)Math.round(num * n)) / (double)n;
} private static long pow10(int exponent) {
long result = 1L;
while(exponent-- > 0) {
result *= 10L;
}
return result;
}
}
double d = 123.456;d = 1.0*((long)(d*100))/100;这样就行了。
保留指定数目的小数可以使用System.out.printf()
d = (int)(d*100)/100.0; 保留两位小数,书上标准范例
d = 1.0 * ((long)(d * 100))/100;
d = (long)(d * 100)/100.0 同理d * 100 值是:12345.6;
(long)(d * 100) 值是:12345;
1.0 * (long)(d * 100) 值是12345(double类型);
1.0 * ((long)(d * 100)) / 100; 值是123.45;