ebuddy
oh.. nice!
What the hell is going on?!
BlogJava
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
随笔:46 文章:2 评论:233 引用:0
要求精确答案就避免使用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
翔南
阅读(1196)
评论(5)
编辑
收藏
所属分类:
技术
评论
#
re: 要求精确答案就避免使用double和float
呵呵,这很正常,浮点数本来就是有误差的,而BigDecimal在内部不是以浮点表示的
#
re: 要求精确答案就避免使用double和float
请学习浮点数的储存原理。
#
re: 要求精确答案就避免使用double和float
浮点型设计的本身不是用于精确计算的,而是用于科学计数的。所以要精确可以采用BigDecimal做转换。
#
re: 要求精确答案就避免使用double和float
谢谢各位的指点哈!!
#
re: 要求精确答案就避免使用double和float[未登录]
嗯,我也是从Effective Java上面看的
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
知识库
C++博客
博问
管理
相关文章:
Understanding Binary, Decimal and Hexadecimal - A Tutorial
shell之“>/dev/null 2>&1”
iostat来对linux硬盘IO性能进行了解
Understanding software Installation (configure, make, make install)
oracle rman
Oracle 表解锁
ORACLE批量绑定FORALL与BULK COLLECT
oracle查看表分区情况sql
oracle存储过程被锁定的解决方法
Oracle牛人blog
<
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
公告
Welcome!
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(51)
给我留言
查看公开留言
查看私人留言
随笔分类
(45)
乱78糟(19)
(rss)
技术(26)
(rss)
随笔档案
(45)
2012年12月 (1)
2011年12月 (1)
2011年11月 (1)
2011年9月 (2)
2011年8月 (7)
2011年7月 (4)
2011年3月 (2)
2011年2月 (2)
2010年8月 (1)
2010年6月 (1)
2010年5月 (1)
2010年4月 (1)
2010年1月 (2)
2009年12月 (2)
2009年11月 (2)
2009年10月 (1)
2009年9月 (1)
2009年5月 (1)
2009年4月 (1)
2008年10月 (1)
2007年12月 (3)
2007年10月 (6)
2007年9月 (1)
相册
void
好网站
Eclicpse官方网站
(rss)
Gmail登录
Java examples
SUN官方网站
VeryCD电骡资源下载
交通银行官方网站
地图、公交搜索
射手网--国内最好的字幕下载网站
建设银行官方网站
得益网
招商银行信用卡官方网站
支付宝登录
搜索
积分与排名
积分 - 77908
排名 - 714
最新评论
1. re: java与.net平台之间进行RSA加密验证
RSAType 这个是啥啊 楼主 求指教:我Q:952547032
--马军
2. re: TEA加密算法java版
你好麻烦问下SaveFileIO这个类找到了吗 @尚雪莲
--强锦旗
3. re: TEA加密算法java版
SaveFileIO 这个类在哪里?
--尚雪莲
4. re: java与.net平台之间进行RSA加密验证[未登录]
RSAType 这个是啥啊 楼主
--Cobra
5. re: CET-4大学英语四级历年真题及答案Word版[89-07年39套],提供下载!
CET-4大学英语四级历年真题及答案Word版[89-07年39套],
非常感谢博主! 万分感谢!
--刘元洪
阅读排行榜
1. CET-4大学英语四级历年真题及答案Word版[89-07年39套],提供下载!(10109)
2. java与.net平台之间进行RSA加密验证(9816)
3. linux下使用crond定时执行kettle的job(9066)
4. TEA加密算法java版(8727)
5. 小游戏--贪食蛇--C#--源代码(4815)
评论排行榜
1. CET-4大学英语四级历年真题及答案Word版[89-07年39套],提供下载!(100)
2. my俄罗斯方块!(45)
3. my俄罗斯方块修正BUG和新功能!提供下载!(18)
4. 小游戏--贪食蛇--C#--源代码(12)
5. 签了! 找工作 == 噩梦般的生活(11)