这个问题在这里已经有了答案:Formattingdoubleto2decimalsdoesn'twork(4个答案)关闭8年前。我正在尝试将double值四舍五入为2位小数,但它并非在所有情况下都有效publicstaticdoubleround(doublevalue,intplaces){if(places简而言之,无论是否存在小数点,即使需要补零,也始终将值保留为小数点后两位。感谢任何帮助!
我正在制作一个基本的Java程序,我想使用基本的Swing画一条线Graphics.drawLine.有没有一种方法可以使两点成为double,这样我就可以使输出更准确,或者其他更好的方法? 最佳答案 您可以使用((Graphics2D)g).draw(Shape)绘制线条并将其传递给Line2D.Double。这是一个演示:importjavax.swing.*;publicclassFrameTestBaseextendsJFrame{publicstaticvoidmain(Stringargs[]){FrameTestBas
我可以使用compareTo对整数和double值进行排序吗?我的系统给我一个错误,我无法在原始类型int上调用compareTo(int)。有什么想法吗?代码:publicintcompare(Objecto1,Objecto2){Recordo1C=(Record)o1;Recordo2C=(Record)o2;returno1C.getPrice().compareTo(o2C.getPrice());}classRecordpublicclassRecord{Stringname;intprice;publicStringgetName(){returnname;}public
我试图去掉double值的小数分隔符后不必要的符号。我是这样做的:DecimalFormatformat=newDecimalFormat("#.#####");value=Double.valueOf(format.format(41251.50000000012343));但是当我运行这段代码时,它会抛出:java.lang.NumberFormatException:Forinputstring:"41251,5"atsun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)atjava.lan
我最近开始在一个项目中使用Sonar,我发现关于使用构造函数newBigDecimal(doubleval)的PMD规则被打破了。当我阅读java文档时,我发现newBigDecimal(doubleval)有点不可预测,我应该使用可预测的newBigDecimal(Stringval)。这是javadoc对BigDecimalpublicBigDecimal(doubleval)的描述:TranslatesadoubleintoaBigDecimalwhichistheexactdecimalrepresentationofthedouble'sbinaryfloating-poin
我正在尝试将double分为整数和小数部分因此,例如,数字24.4应分为24和4。intinteger=(int)number;doubledecimal=number-(int)number;System.out.println(decimal);使用此方法可以得到以下值:integer=24decimal=0.3999999999999986我需要decimal的值为4。如何解决这个问题? 最佳答案 你可以做一个字符串split(...).然后是整数parseInt(...)取回两个整数分量。
我们正在使用Sonar检查代码的质量,Sonar找到了比较float或double与常量值是否相等的代码,如下所示:if(x==0.0){…}变量与(0.0)比较的值是常量,如果变量可以等于该值,则该值也不会被计算,而只能通过常量设置。这通常用于检查变量是否尚未设置或仍处于初始化状态,例如。G。-1.0在值只能为正的情况下可能用于“尚未设置”。因此,由于这些值从未计算,而只是从常量设置,因此Sonar投诉对我们没有用。只有对于计算值(或不能精确表示为float或double值的断裂值),对相等性测试的提示才有意义。我现在的问题是:更改代码以使Sonar不再提示此问题的最佳做法是什么?我
假设我有两个整数值存储在double变量中,e。例如:doublex=100.0;doubley=7.0;我可以安全地假设对这两个double变量产生整数结果的任何算术运算都将返回一个精确的整数值(作为double)吗?也就是说,例如所有:x+y=107.0x-y=93.0x*y=700.0返回准确的整数值,还是会有一些精度问题?比如x*y是699.99995左右?一般问题:对两个包含整数值的double变量的任何算术运算都会产生整数结果,是否会返回精确的整数值(作为double)?我是在Java上下文中问这个问题,但我认为它在其他语言中也是类似的。 最佳答
我想将double转换成String。我希望它的位数尽可能少,最多6位。所以我找到了String.format("%.6f",d),它将我的100.0转换为100.000000。最大精度工作正常,但我希望将其转换为100(最小精度)。您知道哪种方法是这样工作的吗? 最佳答案 使用DecimalFormat:newDecimalFormat("#.0#####").format(d)。这将生成具有1到6位十进制数字的数字。由于DecimalFormat将使用默认语言环境的符号,您可能需要提供要使用的符号://Formatusingen
我不明白为什么float值与double值不同。从下面的示例中可以看出,对于相同的操作,float提供的结果与double提供的结果不同:publicclassTest{publicstaticvoidmain(String[]args){doublea=99999.8d;doubleb=99999.65d;System.out.println(a+b);floata2=99999.8f;floatb2=99999.65f;System.out.println(a2+b2);}}输出:199999.45199999.44您能解释一下float和double之间的区别吗?