oh.. nice!
What the hell is going on?!
BlogJava
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
要求精确答案就避免使用double和float
今天看Effective java中有这么一条"如果要求精确答案,请避免使用float和double".
这可真让我大吃一惊!!我很不解,而且不是很相信.于是我写了两个个程序试验了下.
1
public
class
TestFloatDouble
{
2
3
public
static
void
main(String[] args)
{
4
5
float
a
=
(
float
)
1.03
;
6
float
b
=
(
float
) .
42
;
7
8
double
c
=
1.03
;
9
double
d
=
.
42
;
10
11
System.out.println(a
*
b);
12
System.out.println(c
-
d);
13
}
14
15
}
输出结果为
0.43259996
0.6100000000000001
而正确结果应为
0.4326
0.61
如果需要得到精确答案,那就用java.math里的BigDecimal吧,虽然效率相对低一点,但至少是正确的!!!
1
import
java.math.BigDecimal;
2
3
public
class
TestBigDecimal
{
4
5
public
static
void
main(String[] args)
{
6
7
BigDecimal a
=
new
BigDecimal(
"
1.03
"
);
8
BigDecimal b
=
new
BigDecimal(
"
.42
"
);
9
10
System.out.println(a.multiply(b));
11
System.out.println(a.subtract(b));
12
13
}
14
15
}
输出结果同样也是正确结果为
0.4326
0.61
我就不会了,谁能告诉我这是为什么呢???????
各位大虾们给偶指点下!!!
what the hell is going on ??!!
发表于 2007-10-05 10:36
翔南
阅读(815)
评论(5)
编辑
收藏
评论
#
re: 要求精确答案就避免使用double和float
呵呵,这很正常,浮点数本来就是有误差的,而BigDecimal在内部不是以浮点表示的
#
re: 要求精确答案就避免使用double和float
请学习浮点数的储存原理。
#
re: 要求精确答案就避免使用double和float
浮点型设计的本身不是用于精确计算的,而是用于科学计数的。所以要精确可以采用BigDecimal做转换。
#
re: 要求精确答案就避免使用double和float
谢谢各位的指点哈!!
#
re: 要求精确答案就避免使用double和float[未登录]
嗯,我也是从Effective Java上面看的
IT新闻
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航:
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
随笔:10 文章:1 评论:148 引用:0
<
2007年10月
>
日
一
二
三
四
五
六
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
公告
欢迎!
挖卡卡!
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔档案
2008年10月 (1)
2007年12月 (3)
2007年10月 (6)
2007年9月 (1)
相册
void
好网站
Eclicpse官方网站
(rss)
Gmail登录
Java examples
SUN官方网站
VeryCD电骡资源下载
交通银行官方网站
地图、公交搜索
射手网--国内最好的字幕下载网站
建设银行官方网站
得益网
招商银行信用卡官方网站
支付宝登录
搜索
最新评论
1. re: CET-4大学英语四级历年真题及答案Word版[89-07年39套],提供下载![未登录]
谢谢
--sword
2. re: CET-4大学英语四级历年真题及答案Word版[89-07年39套],提供下载![未登录]
谢了哈
--狼
3. re: 小游戏--贪食蛇--C#--源代码[未登录]
我也曾经遇到过你的问题。
我当时构成的是一个非对称加密程序的万次运算对比。。。
当时给我的答复是:编译的时候要加载编译信息库等等,所以耗资源。。。
谢谢你的程序,下来看看。
--leo
4. re: CET-4大学英语四级历年真题及答案Word版[89-07年39套],提供下载!
好人呀,谢谢
--逍遥子
5. re: CET-4大学英语四级历年真题及答案Word版[89-07年39套],提供下载!
谢谢
--热
阅读排行榜
1. CET-4大学英语四级历年真题及答案Word版[89-07年39套],提供下载!(3470)
2. TEA加密算法java版(1208)
3. 小游戏--贪食蛇--C#--源代码(907)
4. 二进制与任意字符互转小程序(892)
5. 要求精确答案就避免使用double和float(815)
评论排行榜
1. CET-4大学英语四级历年真题及答案Word版[89-07年39套],提供下载!(53)
2. my俄罗斯方块!(45)
3. my俄罗斯方块修正BUG和新功能!提供下载!(18)
4. 签了! 找工作 == 噩梦般的生活(9)
5. TEA加密算法java版(7)