Tag: double

在arrayList中对对象的double值进行排序

我正在尝试按照得分属性的值来对我的自定义类染色体进行排序。 这些染色体存储在ArrayList中。 我知道我必须使用比较器,但我在过去一小时内在线阅读了很多不同的意见,我完全感到困惑。 附上我的代码,如果有人能指出我正确的方向,我将不胜感激。 public class Chromosome { public Gene[] genes; public double score; public Chromosome(int l) { genes = new Gene[l]; } public int getLength() { return genes.length; } public void printChromo() { for(int i=0;i<this.genes.length;i++) { System.out.println(""+this.genes[i].teacher+","+ this.genes[i].lecture+","+ this.genes[i].room+","+ this.genes[i].time+""); } } public void setScore(double score) { this.score=score; } public double getScore() { return […]

从double到int的可能有损转换

为什么我得到Possible lossy conversion from double to int错误,我该如何解决? public class BinSearch { public static void main(String [] args) { double set[] = {-3,10,5,24,45.3,10.5}; double l = set.length; double i, j, first, temp; System.out.print(“Before it can be searched, this set of numbers must be sorted: “); for (i = l-1; i>0; i–) { first=0; for(j=1; j<=i; j++) […]

无论如何要从Double转换为BigInteger?

反正有没有从double值转换为BigInteger ? double doubleValue = 64654679846513164.2; BigInteger bigInteger = (BigInteger) doubleValue; 我尝试施放它但它不起作用。

Java:使用DecimalFormat格式化双精度和整数但保持整数不带小数分隔符

我正在尝试在Java程序中格式化一些数字。 数字将是双精度和整数。 处理双精度时,我想只保留两个小数点,但在处理整数时,我希望程序保持不受影响。 换一种说法: 双打 – 输入 14.0184849945 双打 – 输出 14.01 整数 – 输入 13 整数 – 输出 13 (not 13.00) 有没有办法在同一个 DecimalFormat实例中实现它? 到目前为止,我的代码如下: DecimalFormat df = new DecimalFormat(“#,###,##0.00”); DecimalFormatSymbols otherSymbols = new DecimalFormatSymbols(Locale.ENGLISH); otherSymbols.setDecimalSeparator(‘.’); otherSymbols.setGroupingSeparator(‘,’); df.setDecimalFormatSymbols(otherSymbols);

将双倍与零比较

我是Java的新手,我一直在尝试实现一种算法,用于查找立方体方程的根。 当我计算判别式并试图检查其相对于零的位置时,就会出现问题。 如果运行它并输入数字“1 -5 8 -4”,输出如下: 1 -5 8 -4 p=-0.333333, q=0.074074 disc1=0.001372, disc2=-0.001372 discriminant=0.00000000000000001236 Discriminant is greater than zero. 我知道问题出现了,因为双打的计算并不准确。 通常判别式应为0,但最终为0.00000000000000001236。 我的问题是,避免这种情况的最佳方法是什么? 我应该检查数字是否介于epsilon邻域为零之间? 还是有更好更精确的方法? 提前感谢您的回答。 import java.util.Scanner; class Cubical { public static void main(String[] args) { // Declare the variables. double a, b, c, d, p, q, gamma, discriminant; Scanner userInput = new Scanner(System.in); […]

究竟什么是双重意味着在java?

我是Java的新手,只想确认Double是什么? 它与Float或Int类似吗? 任何帮助,将不胜感激。 我有时也看到大写的Double和其他时候的小写double 。 如果有人能澄清这意味着什么是伟大的!

将对象(类型为double)转换为int

好的,如果我有这个代码 double a=1.5; int b=(int)a; System.out.println(b); 一切都很好,但是 Object a=1.5; int b=(int)a; System.out.println(b); 运行后给出以下错误(Eclipse没有给出任何错误) java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer 虽然,当我这样做 Object a=1.5; double b=(double)a; int c=(int)b; System.out.println(c); 要么 Object a=1.5; int b=(int)(double)a; System.out.println(b); 没有什么不对的。 你为什么要把它先double ?

比较Java中的相等的双重值。

我想从那些在Java中使用原始double相等经验的人那里得到一些建议。 由于可能的舍入误差,将d1 == d2用于两个双精度d1和d2是不够的。 我的问题是: Java的Double.compare(d1,d2) == 0在某种程度上处理舍入错误吗? 如1.7文档中所述,如果d1在数值上等于d2则返回值0 。 是否有人确定它们在数值上是什么意思? 对某些delta值使用相对误差计算,是否会推荐使用delta的通用(非特定于应用程序)值? 请参阅下面的示例。 下面是考虑相对误差来检查相等性的通用函数。 您建议从delta操作+, – ,/,*操作中捕获大部分舍入误差的delta值是多少? public static boolean isEqual(double d1, double d2) { return d1 == d2 || isRelativelyEqual(d1,d2); } private static boolean isRelativelyEqual(double d1, double d2) { return delta > Math.abs(d1- d2) / Math.max(Math.abs(d1), Math.abs(d2)); }

双减法精度问题

我的同事做了这个实验: public class DoubleDemo { public static void main(String[] args) { double a = 1.435; double b = 1.43; double c = a – b; System.out.println(c); } } 对于这个一年级的操作,我期望这个输出: 0.005 但出乎意料的是输出是: 0.0050000000000001155 为什么在这么简单的操作中双重失败? 如果double不是这项工作的数据类型,我应该使用什么?

java程序使用int和double

我写了一个简单的Java程序,如下所示: public class Test { public static void main(String[] args) { int i1 =2; int i2=5; double d = 3 + i1/i2 +2; System.out.println(d); } } 由于变量d被声明为double,我期望这个程序的结果是5.4但我输出为5.0 请帮助我理解这一点。