当前位置: 技术问答>java相关
一个关于浮点数的问题
来源: 互联网 发布时间:2015-03-26
本文导语: import java.lang.Float; public class me{ public static void main(String args[]){ int i=5; int t=8; //float h; i=i+t; Float h=new Float((i+t)/2); i=h.intValue( ); System.out.println(i); }} 运行结果居然是10......这让我实在费解 请...
import java.lang.Float;
public class me{
public static void main(String args[]){
int i=5;
int t=8;
//float h;
i=i+t;
Float h=new Float((i+t)/2);
i=h.intValue( );
System.out.println(i);
}}
运行结果居然是10......这让我实在费解 请各位高手指教
public class me{
public static void main(String args[]){
int i=5;
int t=8;
//float h;
i=i+t;
Float h=new Float((i+t)/2);
i=h.intValue( );
System.out.println(i);
}}
运行结果居然是10......这让我实在费解 请各位高手指教
|
i=13
t=8
i+t=21
(i+t)/2=10
h=10.0
i=10
t=8
i+t=21
(i+t)/2=10
h=10.0
i=10
|
如果运行结果不是10才令人费解。你所想要的结果是什么?难道是11吗?
老实说我不大明白你的程序究竟要干什么?如果你想要h得到10.5,你应该先对i和t造型。
Float h=new Float((i+t)/2); ==〉 Float h=new Float(((float)i+(float)t)/2);
或者 Float h=new Float(((float)(i+t))/2);也可以,否则整数运算返回的一定是一个整数。
但是i=h.intValue( );等于对h进行整数造型。Java的规则是舍去小数部分。
如果你想要得到4舍5入的结果,那应该是i=Math.round(h.floatValue());。
老实说我不大明白你的程序究竟要干什么?如果你想要h得到10.5,你应该先对i和t造型。
Float h=new Float((i+t)/2); ==〉 Float h=new Float(((float)i+(float)t)/2);
或者 Float h=new Float(((float)(i+t))/2);也可以,否则整数运算返回的一定是一个整数。
但是i=h.intValue( );等于对h进行整数造型。Java的规则是舍去小数部分。
如果你想要得到4舍5入的结果,那应该是i=Math.round(h.floatValue());。
|
以后这种问题就不要再上来了,自己粗心大意。以免让微软版的人笑掉大牙
|
哦,不好意思,是我看错题目了,搞什么不知道,少看了一行,呵呵