锁定老帖子 主题:一道简单笔试题,你给力吗?
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-27
for (int i = -2; i <= 2; i++) {
System.out.println((i % 2 != 0)); } System.out.println(2.00f - 1.10f); 就可以得到想要的结果。 下面的代码确实可以实现,但是语义不明确,会给以后的维护增加难度(别人要去理解你想表达的意思)。 for (int i = -2; i <= 2; i++) { System.out.println((i & 1) == 1); } |
|
返回顶楼 | |
发表时间:2010-12-27
ouchxp 写道 贫僧不吃肉 写道 2.00-1.10那个。。 貌似是java对浮点数的表示的方面有问题。。 经典的精度丢失问题.不只是Java的问题. 精确计算,要使用BigDecimal 精度丢失问题这里有详细论述 http://hxraid.iteye.com/blog/504293 这个解释给力! |
|
返回顶楼 | |
发表时间:2010-12-28
运行一下,哈哈。关于结果小数点后有很多位,我们讨论过是因为二进制的计算问题。
|
|
返回顶楼 | |
发表时间:2010-12-28
xieyan 写道 for (int i = -2; i <= 2; i++) {
System.out.println((i % 2 != 0)); } System.out.println(2.00f - 1.10f); 就可以得到想要的结果。 下面的代码确实可以实现,但是语义不明确,会给以后的维护增加难度(别人要去理解你想表达的意思)。 for (int i = -2; i <= 2; i++) { System.out.println((i & 1) == 1); } (i & 1) == 1 何处语义不明? |
|
返回顶楼 | |
发表时间:2010-12-28
dsjt 写道 xieyan 写道 for (int i = -2; i <= 2; i++) {
System.out.println((i % 2 != 0)); } System.out.println(2.00f - 1.10f); 就可以得到想要的结果。 下面的代码确实可以实现,但是语义不明确,会给以后的维护增加难度(别人要去理解你想表达的意思)。 for (int i = -2; i <= 2; i++) { System.out.println((i & 1) == 1); } (i & 1) == 1 何处语义不明? ①i % 2 != 0 ②(i & 1) == 1 假设我们从非专业的编成人员(例如:客户)来看, ①方案很容易让人明白是求奇数,②方案不容易让人理解。 |
|
返回顶楼 | |
发表时间:2010-12-28
xieyan 写道 dsjt 写道 xieyan 写道 for (int i = -2; i <= 2; i++) {
System.out.println((i % 2 != 0)); } System.out.println(2.00f - 1.10f); 就可以得到想要的结果。 下面的代码确实可以实现,但是语义不明确,会给以后的维护增加难度(别人要去理解你想表达的意思)。 for (int i = -2; i <= 2; i++) { System.out.println((i & 1) == 1); } (i & 1) == 1 何处语义不明? ①i % 2 != 0 ②(i & 1) == 1 假设我们从非专业的编成人员(例如:客户)来看, ①方案很容易让人明白是求奇数,②方案不容易让人理解。 这个解法好 |
|
返回顶楼 | |
发表时间:2010-12-28
import java.math.*; public class Problems { //判断是否为奇数,是就返回true public static boolean isOdd(int i){ return (i&1)== 1; } public static void main(String[] args){ for(int i=-2;i<=2;i++){ System.out.println(isOdd(i)); } //字符串构造的BigDecimal进行精确运算 BigDecimal a = new BigDecimal("2.00"); BigDecimal b = new BigDecimal("1.10"); System.out.println(a.subtract(b)); } } |
|
返回顶楼 | |
发表时间:2010-12-29
我不给力
0 -1 0 1 0 0.89999999... 程序执行一下才发现 false false false true false 0.8999999999999999 搞笑了,呵呵 |
|
返回顶楼 | |
发表时间:2011-04-23
苍山洱海 写道 false
false false true false 0.8999999999999999 答案是这样的。 |
|
返回顶楼 | |
发表时间:2011-04-23
yangyi 写道 public static boolean isOdd(int i){
return (i & 1) == 1; } 牛叉! |
|
返回顶楼 | |