快速业务通道

java的switch语句 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04
CastingNumbers.java // What happens when you cast a float or double // to an integral value? public class CastingNumbers { public static void main(String[] args) { double above = 0.7, below = 0.4; System.out.println("above: " + above); System.out.println("below: " + below); System.out.println( "(int)above: " + (int)above); System.out.println( "(int)below: " + (int)below); System.out.println( "(char)(''a'' + above): " + (char)(''a'' + above)); System.out.println( "(char)(''a'' + below): " + (char)(''a'' + below)); } } ///:~ 输出结果如下:
above: 0.7
below: 0.4
(int)above: 0
(int)below: 0
(char)(''a'' + above): a
(char)(''a'' + below): a
所以答案就是:将一个float或double值造型成整数值后,总是将小数部分“砍掉”,不作任何进位处理。第二个问题与Math.random()有关。它会产生0和1之间的值,但是否包括值''1''呢?用正统的数学语言表达,它到底是(0,1),[0,1],(0,1],还是[0,1)呢(方括号表示“包括”,圆括号表示“不包括”)?同样地,一个示范程序向我们揭示了答案:
//: RandomBounds.java
// Does Math.random() produce 0.0 and 1.0?

public class RandomBounds {
  static void usage() {
    System.err.println("Usage: \n\t" +
      "RandomBounds lower\n\t" +
      "RandomBounds upper");
    System.exit(1);
  }
  public static void main(String[] args) {
    if(args.length != 1) usage();
    if(args[0].equals("lower")) {
      while(Math.random() != 0.0)
        ; // Keep trying
      System.out.println("Produced 0.0!");
    } 
    else if(args[0].equals("upper")) {
      while(Math.random() != 1.0)
        ; // Keep trying
      System.out.println("Produced 1.0!");
    } 
    else 
      usage();
  }
} ///:~
为运行这个程序,只需在命令行键入下述命令即可:java RandomBounds lower或java RandomBounds upper在这两种情况下,我们都必须人工中断程序,所以会发现Math.random()“似乎”永远都不会产生0.0或1.0。但这只是一项实验而已。若想到0和1之间有2的128次方不同的双精度小数,所以如果全部产生这些数字,花费的时间会远远超过一个人的生命。当然,最后的结果是在Math.random()的输出中包括了0.0。或者用数字语言表达,输出值范围是[0,1)。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号