。
为什么将Double.parseDouble制作9999999999999999
为10000000000000000
?例如 :
Double d =Double.parseDouble("9999999999999999");
String b= new DecimalFormat("#.##").format(d);
System.out.println(b);
IS印刷
10000000000000000
相反,它必须显示9999999999999999
或9999999999999999.00
任何帮助都将不胜感激。
double
仅具有15/16位数的精度,当您给它提供一个数字时,它就无法表示(多数情况下,甚至0.1都不是精度),它将采用最接近的可表示数字。
如果要9999999999999999
精确表示,则需要使用BigDecimal。
BigDecimal bd = new BigDecimal("9999999999999999");
System.out.println(new DecimalFormat("#.##").format(bd));
版画
9999999999999999
现实世界中很少有问题需要这种准确性,因为您无论如何都无法准确地进行测量。即每百万分之一的误差。
您可以找到最大的可表示整数
// search all the powers of 2 until (x + 1) - x != 1
for (long l = 1; l > 0; l <<= 1) {
double d0 = l;
double d1 = l + 1;
if (d1 - d0 != 1) {
System.out.println("Cannot represent " + (l + 1) + " was " + d1);
break;
}
}
版画
Cannot represent 9007199254740993 was 9.007199254740992E15
可表示的最大整数是9007199254740992,因为它需要少一位(偶数)
我刚刚安装了Ubuntu desktop 12.04并通过以下方式安装了Java 6 JDK: 但是当我转到时,我没有看到一个名为的目录,所以我认为它根本不存在!?! 当我转到时,我看到: 我现在正试图将作为环境变量添加到中,以便从基于shell的Ant构建中访问它: ? ? 还有别的吗? 我所说的“”是指我在系统上安装的JDK6的顶级目录,无论它在哪里······
问题内容: 我一直想知道为什么JDBC API提供了自动提交模式()。似乎很吸引人的麻烦只是诱使人们陷入麻烦。我的理论是,仅将其添加到JDBC是为了简化希望创建使用JDBC编辑和运行SQL的工具的供应商的生活。是否有其他原因打开自动提交,还是总是错误? 问题答案: 不幸的是,使用自动提交是特定于数据库的(事务行为也是如此)。我认为,如果您没有全局的程序化交易策略,自动提交可能比仅希望每个人都正确关
我不得不问这是一个好的做法吗?好心地建议使用它的优点和缺点(利弊)。
我最近一直在学习Android系统,我有一个关于新Android系统库的问题。据我所知,AndroidX只是对支持库的一个新升级,其重点是为早期的Android SDK提供向后兼容性。 但是,Google要求"如果你想在一个新项目中使用AndroidX,你需要将编译SDK设置为Android 9.0(API级别28)或更高版本"。我在这里感到困惑。这是否意味着AndroidX实际上使用了一些仅在A
问题内容: 我已经阅读了文档。但我仍然不确定何时不需要将其设置为。在下面的代码中,如果将其设置为,则根本看不到标题。如果我将其保留为,那么一切都很好。 View调试层次结构中的以下内容将给出警告“ 宽度 和 位置 不明确”。 我以为只要需要修改代码中的任何内容,都必须设置为。 如果您需要删除其所有约束,然后将其设置为,然后添加所需的内容,则可能是更正确的说法,在这种情况下,您需要为所有四个方面添加
代码A来自项目,您可以看到它。 我不知道作者为什么将设计为,这是因为代码不太复杂,被多次调用。 我认为代码B可以很好地工作,对吗? 代码B