A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 伊文龙 中级黑马   /  2012-5-18 03:30  /  2158 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚刚在做小练习,本来以为很简单,但是出现了我意想不到的问题,求教......3Q不解释.
  1. public class SY2_6 {
  2.         /**
  3.          * 华氏度 = 32 + 摄氏度 × 1.8
  4.          * 打印从摄氏0°到摄氏100°的转换表
  5.          */
  6.         public static void main(String args[]){
  7.                 double huashi;
  8.                 for(int i=0; i<=100; i++){
  9.                         huashi = 32 + i * 1.8;
  10.                         if(i==0){
  11.                                 System.out.println("+-------+-------+");
  12.                                 System.out.println("|华氏度    | 摄氏度 |");
  13.                                 System.out.println("+-------+-------+");
  14.                         }
  15.                         System.out.println("|"+huashi+"\t"+"|"+i+"\t|");
  16.                         System.out.println("+-------+-------+");
  17.                        
  18.                 }
  19.                        
  20.         }

  21. }
复制代码
我运行的结果:
  1. public class SY2_6 {
  2.         /**
  3.          * 华氏度 = 32 + 摄氏度 × 1.8
  4.          * 打印从摄氏0°到摄氏100°的转换表
  5.          */
  6.         public static void main(String args[]){
  7.                 double huashi;
  8.                 for(int i=0; i<=100; i++){
  9.                         huashi = 32 + i * 1.8;
  10.                         if(i==0){
  11.                                 System.out.println("+-------+-------+");
  12.                                 System.out.println("|华氏度    | 摄氏度 |");
  13.                                 System.out.println("+-------+-------+");
  14.                         }
  15.                         System.out.println("|"+huashi+"\t"+"|"+i+"\t|");
  16.                         System.out.println("+-------+-------+");
  17.                        
  18.                 }
  19.                        
  20.         }

  21. }
复制代码

11 个回复

正序浏览
这个和你代码是无关系的,你用的double  是java中的基本数据类型,他们用来做科学计算的话,是不精确的
比如很简单的代码          double i=1.006;
                        double j=1;
                        System.out.println(i+j); 运行结果为:2.0060000000000002  而并不是2.006,

。如果要进行精确计算的话需要使用BigDecimal

BigDecimal a = new BigDecimal(i);
BigDecimal b = new BigDecimal(j);

相应的加减乘除方法

switch (this.operator) {
                case '+':
                        this.result = a.add(b).toString();
                        break;
                case '-':
                        this.result = a.subtract(b).toString();
                        break;

                case '*':
                        this.result = a.multiply(b).toString();
                        break;
                case '/':
                        if (b.doubleValue() == 0) {
                                throw new RuntimeException("被除数不能为0");
                        }
                        this.result = a.divide(b, 10, BigDecimal.ROUND_HALF_UP).toString();
                        break;
                default:
                        throw new RuntimeException("运算符号错误:" + this.operator);
                }

回复 使用道具 举报
我能驾驭住 发表于 2012-5-18 07:45
终于给你解决了,
public class Demo
        {

你把我小数点后面的东西全搞掉了...:'(
回复 使用道具 举报
余宏 中级黑马 2012-5-18 09:29:40
9#
这个是精度吧,要是好看你可以写成这样:
double huashi;
                 
                                for(int i=0; i<=100; i++){
                 
                                        huashi = 32 + i * 1.8;
                                        huashi=(double)((int)(huashi*100+0.5))/100;
                                      if(i==0){
                                              System.out.println("|华氏度    | 摄氏度 |");
                                       }
                 
                                        System.out.println("|"+huashi+"\t"+"|"+i+"\t|");
                                }               
回复 使用道具 举报
我能驾驭住 发表于 2012-5-18 07:46
我把System.out.println("+-------+-------+");
                                System.out.println("|华 ...

对啊,真晕了,没必要放在里面......
回复 使用道具 举报
+-------+-------+
|华氏度    | 摄氏度
+-------+-------+
|32.0   0       |
+-------+-------+
|34.0   1       |
+-------+-------+
|36.0   2       |
+-------+-------+
|37.0   3       |
+-------+-------+
|39.0   4       |
+-------+-------+
|41.0   5       |
+-------+-------+
|43.0   6       |
+-------+-------+
|45.0   7       |
+-------+-------+
|46.0   8       |
+-------+-------+
|48.0   9       |
+-------+-------+
|50.0   10      |
+-------+-------+
|52.0   11      |
+-------+-------+
|54.0   12      |
+-------+-------+
|55.0   13      |
+-------+-------+
|57.0   14      |
+-------+-------+
|59.0   15      |
+-------+-------+
|61.0   16      |
+-------+-------+
|63.0   17      |
+-------+-------+
|64.0   18      |
+-------+-------+
|66.0   19      |
+-------+-------+
|68.0   20      |
+-------+-------+
|70.0   21      |
+-------+-------+
|72.0   22      |
+-------+-------+
|73.0   23      |
+-------+-------+
|75.0   24      |
+-------+-------+
|77.0   25      |
+-------+-------+
|79.0   26      |
+-------+-------+
|81.0   27      |
+-------+-------+
|82.0   28      |
+-------+-------+
|84.0   29      |
+-------+-------+
|86.0   30      |
+-------+-------+
|88.0   31      |
+-------+-------+
|90.0   32      |
+-------+-------+
|91.0   33      |
+-------+-------+
|93.0   34      |
+-------+-------+
|95.0   35      |
+-------+-------+
|97.0   36      |
+-------+-------+
|99.0   37      |
+-------+-------+
|100.0  38      |
+-------+-------+
|102.0  39      |
+-------+-------+
|104.0  40      |
+-------+-------+
|106.0  41      |
+-------+-------+
|108.0  42      |
+-------+-------+
|109.0  43      |
+-------+-------+
|111.0  44      |
+-------+-------+
|113.0  45      |
+-------+-------+
|115.0  46      |
+-------+-------+
|117.0  47      |
+-------+-------+
|118.0  48      |
+-------+-------+
|120.0  49      |
+-------+-------+
|122.0  50      |
+-------+-------+
|124.0  51      |
+-------+-------+
|126.0  52      |
+-------+-------+
|127.0  53      |
+-------+-------+
|129.0  54      |
+-------+-------+
|131.0  55      |
+-------+-------+
|133.0  56      |
+-------+-------+
|135.0  57      |
+-------+-------+
|136.0  58      |
+-------+-------+
|138.0  59      |
+-------+-------+
|140.0  60      |
+-------+-------+
|142.0  61      |
+-------+-------+
|144.0  62      |
+-------+-------+
|145.0  63      |
+-------+-------+
|147.0  64      |
+-------+-------+
|149.0  65      |
+-------+-------+
|151.0  66      |
+-------+-------+
|153.0  67      |
+-------+-------+
|154.0  68      |
+-------+-------+
|156.0  69      |
+-------+-------+
|158.0  70      |
+-------+-------+
|160.0  71      |
+-------+-------+
|162.0  72      |
+-------+-------+
|163.0  73      |
+-------+-------+
|165.0  74      |
+-------+-------+
|167.0  75      |
+-------+-------+
|169.0  76      |
+-------+-------+
|171.0  77      |
+-------+-------+
|172.0  78      |
+-------+-------+
|174.0  79      |
+-------+-------+
|176.0  80      |
+-------+-------+
|178.0  81      |
+-------+-------+
|180.0  82      |
+-------+-------+
|181.0  83      |
+-------+-------+
|183.0  84      |
+-------+-------+
|185.0  85      |
+-------+-------+
|187.0  86      |
+-------+-------+
|189.0  87      |
+-------+-------+
|190.0  88      |
+-------+-------+
|192.0  89      |
+-------+-------+
|194.0  90      |
+-------+-------+
|196.0  91      |
+-------+-------+
|198.0  92      |
+-------+-------+
|199.0  93      |
+-------+-------+
|201.0  94      |
+-------+-------+
|203.0  95      |
+-------+-------+
|205.0  96      |
+-------+-------+
|207.0  97      |
+-------+-------+
|208.0  98      |
+-------+-------+
|210.0  99      |
+-------+-------+
|212.0  100     |
+-------+-------+
回复 使用道具 举报
本帖最后由 我能驾驭住 于 2012-5-18 07:53 编辑

你写的程序没有错,运行结果有的小数位太长,用一个最简单的四舍五入方法
huashi = Math.round(i * 1.8 +32)*100/100;
先乘以100再除以100,就可以
回复 使用道具 举报
我把System.out.println("+-------+-------+");
                                System.out.println("|华氏度    | 摄氏度 |");
                                System.out.println("+-------+-------+");
给你放在FOR循环外,没必要去用IF语句再判断.执行一次就OK
回复 使用道具 举报
本帖最后由 我能驾驭住 于 2012-5-18 07:54 编辑

终于给你解决了,
public class Demo
        {
        /**
         * 华氏度 = 32 + 摄氏度 × 1.8
         * 打印从摄氏0°到摄氏100°的转换表
         */
        public static void main(String args[]){
                double huashi;
                                                                System.out.println("+-------+-------+");
                                System.out.println("|华氏度    | 摄氏度 |");
                                System.out.println("+-------+-------+");
                                for(int i=0; i<=100; i++)
                                        {
                        huashi = Math.round(i * 1.8 +32)*100/100;
                        System.out.println("|"+huashi+"\t"+i+"\t|");
                        System.out.println("+-------+-------+");
                                                
                        
                }
                        
        }

}
回复 使用道具 举报
这是误差累计吗?
回复 使用道具 举报
不明白的是,为什么会有那么多带很多0的结果
而且我做了这样的实验:
  1. public class SY2_1 {
  2.         public static void main(String[] args) {
  3.                 System.out.println(13*1.8);//不+32
  4.         }
  5. }
  6. //结果:23.400000000000002
复制代码
  1. public class SY2_1 {
  2.         public static void main(String[] args) {
  3.                 System.out.println(13*1.8+32);//+32
  4.         }
  5. }
  6. //结果:55.400000000000006
复制代码
最后面为什么会变成6??????
求解求解..............
回复 使用道具 举报
  1. +-------+-------+
  2. |华氏度    | 摄氏度 |
  3. +-------+-------+
  4. |32.0        |0        |
  5. +-------+-------+
  6. |33.8        |1        |
  7. +-------+-------+
  8. |35.6        |2        |
  9. +-------+-------+
  10. |37.4        |3        |
  11. +-------+-------+
  12. |39.2        |4        |
  13. +-------+-------+
  14. |41.0        |5        |
  15. +-------+-------+
  16. |42.8        |6        |
  17. +-------+-------+
  18. |44.6        |7        |
  19. +-------+-------+
  20. |46.4        |8        |
  21. +-------+-------+
  22. |48.2        |9        |
  23. +-------+-------+
  24. |50.0        |10        |
  25. +-------+-------+
  26. |51.8        |11        |
  27. +-------+-------+
  28. |53.6        |12        |
  29. +-------+-------+
  30. |55.400000000000006        |13        |
  31. +-------+-------+
  32. |57.2        |14        |
  33. +-------+-------+
  34. |59.0        |15        |
  35. +-------+-------+
  36. |60.8        |16        |
  37. +-------+-------+
  38. |62.6        |17        |
  39. +-------+-------+
  40. |64.4        |18        |
  41. +-------+-------+
  42. |66.2        |19        |
  43. +-------+-------+
  44. |68.0        |20        |
  45. +-------+-------+
  46. |69.80000000000001        |21        |
  47. +-------+-------+
  48. |71.6        |22        |
  49. +-------+-------+
  50. |73.4        |23        |
  51. +-------+-------+
  52. |75.2        |24        |
  53. +-------+-------+
  54. |77.0        |25        |
  55. +-------+-------+
  56. |78.80000000000001        |26        |
  57. +-------+-------+
  58. |80.6        |27        |
  59. +-------+-------+
  60. |82.4        |28        |
  61. +-------+-------+
  62. |84.2        |29        |
  63. +-------+-------+
  64. |86.0        |30        |
  65. +-------+-------+
  66. |87.80000000000001        |31        |
  67. +-------+-------+
  68. |89.6        |32        |
  69. +-------+-------+
  70. |91.4        |33        |
  71. +-------+-------+
  72. |93.2        |34        |
  73. +-------+-------+
  74. |95.0        |35        |
  75. +-------+-------+
  76. |96.8        |36        |
  77. +-------+-------+
  78. |98.60000000000001        |37        |
  79. +-------+-------+
  80. |100.4        |38        |
  81. +-------+-------+
  82. |102.2        |39        |
  83. +-------+-------+
  84. |104.0        |40        |
  85. +-------+-------+
  86. |105.8        |41        |
  87. +-------+-------+
  88. |107.60000000000001        |42        |
  89. +-------+-------+
  90. |109.4        |43        |
  91. +-------+-------+
  92. |111.2        |44        |
  93. +-------+-------+
  94. |113.0        |45        |
  95. +-------+-------+
  96. |114.8        |46        |
  97. +-------+-------+
  98. |116.60000000000001        |47        |
  99. +-------+-------+
  100. |118.4        |48        |
  101. +-------+-------+
  102. |120.2        |49        |
  103. +-------+-------+
  104. |122.0        |50        |
  105. +-------+-------+
  106. |123.8        |51        |
  107. +-------+-------+
  108. |125.60000000000001        |52        |
  109. +-------+-------+
  110. |127.4        |53        |
  111. +-------+-------+
  112. |129.2        |54        |
  113. +-------+-------+
  114. |131.0        |55        |
  115. +-------+-------+
  116. |132.8        |56        |
  117. +-------+-------+
  118. |134.60000000000002        |57        |
  119. +-------+-------+
  120. |136.4        |58        |
  121. +-------+-------+
  122. |138.2        |59        |
  123. +-------+-------+
  124. |140.0        |60        |
  125. +-------+-------+
  126. |141.8        |61        |
  127. +-------+-------+
  128. |143.60000000000002        |62        |
  129. +-------+-------+
  130. |145.4        |63        |
  131. +-------+-------+
  132. |147.2        |64        |
  133. +-------+-------+
  134. |149.0        |65        |
  135. +-------+-------+
  136. |150.8        |66        |
  137. +-------+-------+
  138. |152.60000000000002        |67        |
  139. +-------+-------+
  140. |154.4        |68        |
  141. +-------+-------+
  142. |156.2        |69        |
  143. +-------+-------+
  144. |158.0        |70        |
  145. +-------+-------+
  146. |159.8        |71        |
  147. +-------+-------+
  148. |161.6        |72        |
  149. +-------+-------+
  150. |163.4        |73        |
  151. +-------+-------+
  152. |165.20000000000002        |74        |
  153. +-------+-------+
  154. |167.0        |75        |
  155. +-------+-------+
  156. |168.8        |76        |
  157. +-------+-------+
  158. |170.6        |77        |
  159. +-------+-------+
  160. |172.4        |78        |
  161. +-------+-------+
  162. |174.20000000000002        |79        |
  163. +-------+-------+
  164. |176.0        |80        |
  165. +-------+-------+
  166. |177.8        |81        |
  167. +-------+-------+
  168. |179.6        |82        |
  169. +-------+-------+
  170. |181.4        |83        |
  171. +-------+-------+
  172. |183.20000000000002        |84        |
  173. +-------+-------+
  174. |185.0        |85        |
  175. +-------+-------+
  176. |186.8        |86        |
  177. +-------+-------+
  178. |188.6        |87        |
  179. +-------+-------+
  180. |190.4        |88        |
  181. +-------+-------+
  182. |192.20000000000002        |89        |
  183. +-------+-------+
  184. |194.0        |90        |
  185. +-------+-------+
  186. |195.8        |91        |
  187. +-------+-------+
  188. |197.6        |92        |
  189. +-------+-------+
  190. |199.4        |93        |
  191. +-------+-------+
  192. |201.20000000000002        |94        |
  193. +-------+-------+
  194. |203.0        |95        |
  195. +-------+-------+
  196. |204.8        |96        |
  197. +-------+-------+
  198. |206.6        |97        |
  199. +-------+-------+
  200. |208.4        |98        |
  201. +-------+-------+
  202. |210.20000000000002        |99        |
  203. +-------+-------+
  204. |212.0        |100        |
  205. +-------+-------+
复制代码
结果贴错了额
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马