栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java的两倍至分数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java的两倍至分数

对于问题的第一部分,Java将.6存储为.5999999(重复)。看到以下输出:

(after first multiply): d=1234.56(after second multiply): d=12345.599999999999(after third multiply): d=123455.99999999999

一种解决方法是在循环结束后立即使用d = Math.round(d)。

public class Rational {     private int num, denom;     public Rational(double d) {          String s = String.valueOf(d);          int digitsDec = s.length() - 1 - s.indexOf('.');          int denom = 1;          for(int i = 0; i < digitsDec; i++){  d *= 10;  denom *= 10;          }          int num = (int) Math.round(d);          this.num = num; this.denom = denom;     }     public Rational(int num, int denom) {          this.num = num; this.denom = denom;     }     public String toString() {          return String.valueOf(num) + "/" + String.valueOf(denom);     }     public static void main(String[] args) {          System.out.println(new Rational(123.456));     }}

它有效-试试吧。

对于您问题的第二部分…

为了从第一个调用第二个构造函数,可以使用“ this”关键字

this(num, denom)

但这必须是构造函数中的第一行…在这里没有意义(我们必须先进行一些计算)。因此,我不会尝试这样做。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414047.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号