3+7=??????

Downloads of v 3.3.7
Average downloads per day
Last published
Share on Social Networks
License details
Apache-2.0
There is a newer prerelease version of this package available. See the version list below for details.
The most popular front-end framework for developing responsive, mobile first projects on the web.
To install Bootstrap CSS, run the following command in the
Install-Package bootstrap
-Version 3.3.7
Release Notes
Twitter, Inc.
Copyright 2016
Dependencies
(&= 1.9.1 && & 4.0.0)
Version History
Last updated
Friday, January 6, 2017
Wednesday, October 19, 2016
Monday, September 12, 2016
Wednesday, July 27, 2016
Sunday, December 13, 2015
Thursday, August 20, 2015
Monday, July 25, 2016
Tuesday, November 24, 2015
Friday, July 15, 2016
Wednesday, July 22, 2015
Thursday, March 26, 2015
Wednesday, February 11, 2015
Wednesday, November 26, 2014
Tuesday, November 11, 2014
Friday, June 27, 2014
Tuesday, February 25, 2014
Friday, January 31, 2014
Saturday, December 7, 2013
Saturday, November 9, 2013
Thursday, October 31, 2013
Saturday, August 24, 2013
Saturday, August 24, 2013
Thursday, June 27, 2013
Sunday, May 20, 20124474人阅读
《java 解惑》学习笔记(46)
Java代码&&
public&static&void&main(String[]&args)&{&&
&&&&System.out.println(1.0&-&0.1);&&
&&&&System.out.println(1.0&-&0.2);&&
&&&&System.out.println(1.0&-&0.3);&&
&&&&System.out.println(1.0&-&0.4);&&
&&&&System.out.println(1.0&-&0.5);&&
&&&&System.out.println(1.0&-&0.6);&&
&&&&System.out.println(1.0&-&0.7);&&
&&&&System.out.println(1.0&-&0.8);&&
&&&&System.out.println(1.0&-&0.9);&&
&&&&System.out.println(1.0&-&1.0);&&
最后输出的结果为神马是&
Java代码&&
为什么呢?&
简单的说,问题处在&IEEE
754 floating-point arithmetic&,虽然在java是遵循这个规则的,但是java语言的实现,并不是使用小数点或者十进制来表示数字,相反,它是采用分数和指数来表示,而且是
uses binary fractions and exponents to represent
使用二进制的,我们可以举个例子:&
Java代码&&
0.5&=&1/2&&
0.75&=&1/2&+&1/(2^2)&&
0.85&=&1/2&+&1/(2^2)&+&1/(2^3)&&
0.1&=&1/(2^4)&+&1/(2^5)&+&1/(2^8)&+&...&&
注意,0.1只能是无限循环下去的,这就意味着0.1在java里面不能够准确的用浮点数来表示,也就造成了浮点数运算上面的误差。&
举个例子:&
Java代码&&
if&(0.1&+&0.1&+&0.1&!=&0.3)&&
&&&&System.out.println(&0.1&+&0.1&+&0.1&is&not&equal&with&0.3&);&&
&&&&System.out.println(&0.1&+&0.1&+&0.1&is&equal&to&0.3&);&&
每个人都知道,0.1 + 0.1 + 0.1 == 0.3,但是在java的实际结果却不是这样。&
更深入的话&
有人会问,为什么&
Java代码&&
System.out.println(0.1f);&&
输出的还是0.1呢?&
因为在源代码里面println调用的是Float#toString(float),最终的实现是在&
Java代码&&
public&static&String&toString(float&f)&{&&
&&&&return&new&FloatingDecimal(f).toJavaFormatString();&&
有兴趣的童鞋可以去阅读源代码,FloatingDecimal帮你做了很多事情。&
这也牵涉出另外一个话题,如何避免上面出现的问题,&
对的,就是,关于BigDecimal,我相信你们在api上面会找到更多的答案。&
BigDecimal(java.lang.String)&
BigDecimal(double) or BigDecimal(float)&
为什么呢?API上面写的很清楚了&
The results of this constructor can be somewhat unpredictable. One might assume that writing new BigDecimal(0.1) in Java creates a BigDecimal which is exactly equal to 0.1 (an unscaled value of 1, with a scale of 1), but it is actually equal to 0.1015625.
This is because 0.1 cannot be represented exactly as a double (or, for that matter, as a binary fraction of any finite length). Thus, the value that is being passed in to the constructor is not exactly equal to 0.1, appearances notwithstanding.&
Java代码&&
System.out.println(new&BigDecimal(0.1f));&&
System.out.println(new&BigDecimal(&0.1&));&&
System.out.println(0.1f);&&
结果是不一样的&
更加更加更加深入的话&
Java代码&&
if&(0.1f&+&0.1f&+&0.1f&!=&0.3f)&&
&&&&System.out.println(&0.1&+&0.1&+&0.1&is&not&equal&to&0.3&);&&
&&&&System.out.println(&0.1&+&0.1&+&0.1&is&equal&to&0.3&);&&
if&(0.1&+&0.1&!=&0.2)&&
&&&&System.out.println(&0.1&+&0.1&is&not&equal&to&0.2&);&&
&&&&System.out.println(&0.1&+&0.1&is&equal&to&0.2&);&&
为何上面两串代码输出不一样?为何0.3d就不能用3个0.1d相加,而0.2d就可以用2个0.1d相加呢?&
原因的话,自己看下面的输出了&
Java代码&&
System.out.println(new&BigDecimal(0.2d));&&
System.out.println(new&BigDecimal(0.1d).add(new&BigDecimal(0.1d)));&&
System.out.println(new&BigDecimal(0.2f));&&
System.out.println(new&BigDecimal(0.1f).add(new&BigDecimal(0.1f)));&&
System.out.println(new&BigDecimal(0.3d));&&
System.out.println(new&BigDecimal(0.1d).add(new&BigDecimal(0.1d)).add(new&BigDecimal(0.1d)));&&
System.out.println(new&BigDecimal(0.3f));&&
System.out.println(new&BigDecimal(0.1f).add(new&BigDecimal(0.1f)).add(new&BigDecimal(0.1
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:77920次
积分:1447
积分:1447
排名:千里之外
原创:64篇
转载:35篇
(61)(17)(9)(11)(1)}

我要回帖

更多关于 cm7 2.3.7 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信