草庐IT

Java - 通过转换为 double 在 long 中查找前导零

在找到方法之前Long.numberOfLeadingZeros(longi),我将多头投向double并使用Math.getExponent(doubled).想法是找到long的double表示,使用指数获得最高设置位,然后从64中减去它以获得前导零的数量。这主要是有效的,但偶尔会偏离1。使用以下for循环来突出问题:for(inti=0;i>>i;doublemin=Long.MIN_VALUE>>>i;doubleneg=-1L>>>i;System.out.format("Max:%-5dMin:%-5d-1:%-5d%n",Math.getExponent(dmax),Ma

Java 8 - 检查 Double 是否在范围内?

我知道对于整数,Java8具有IntStream,它允许您生成范围并检查它们,例如IntStreamrange=IntStream.rangeClosed(5,10);range.anyMatch(x->x==4);我的问题是我有Double范围,定义为:Light[0,3.0)Moderate[3.0,6.0)Vigorous>=6.0根据这些范围检查的变量是一个doubleval。我只是想知道Java8是否对此有任何方便的解决方案。出于各种原因,我不想使用复杂的if/else树。 最佳答案 如pkpnd在其comment中所述,

java - 来自类定义的 GUI

是否有可以通过查看类或方法签名来构建简单GUI的库?例如:classMyMath{publicstaticdoublesqrt(doubled){//impl}}到因此,当单击按钮时,将调用该方法并显示结果。你知道Java或其他语言中类似的例子吗?谢谢 最佳答案 我编写了一个非常基本的示例,它展示了如何使用几行反射代码和少量swing来实现这一点。也许init()应该返回在GridLayout中找到的使用方法的数量,然后它会更动态。importjava.awt.GridLayout;importjava.awt.event.Acti

java - 计算多点线周围的多边形

我正在尝试计算一个多边形,该多边形围绕连接多个点的线(例如GPX轨道)。下图显示了一个示例,轨道为红线,所需的多边形为蓝色。为简化起见,红点由x和y表示-而不是纬度/经度。如果我只有指定路径的三个点的列表,我该如何计算这样的环境(浅蓝色多边形)?部分解决方案(例如,只有两点)或有关为此类计算提供算法的数学库(Java中)的提示也会让我向前迈出一步。进一步的假设:轨道无交叉路口。更新:使用Rogach和xan提出的方法,如果线之间的角度小于90度或大于270度,我会遇到一些问题:如您所见,多边形与自身相交,这会导致严重的问题。从我的角度来看,使用java.awt.geom.Area是更好

java - 使用 Java 存储和检索大型数据集的最佳方式

我目前正在用Java开发一个项目,我必须在一个非常大的数据集上执行多项信息检索和分类任务。一个小型集合将包含10K个文档。来自每个文档大约100个150维的doublevector。所以大约有1M个vector,包含150个double或150M个double。存储后我需要召回所有这些或其中的一部分并执行聚类(例如KMEANS)。实际集合有更多文档(我目前正在处理200K文档)。当然,我已经处理过几次OutOfMemoryError,我最后的解决方案是存储在10个总大小>5GB的巨大XML文件中。文件必须是10,因为DOMWriter的内存已满。对于阅读,我使用了SAX解析器,它在不将

java - 条件赋值中的数字提升在 Java 中的工作原理

在java中发现了一些奇怪的东西。代码:System.out.println(System.getProperty("java.version"));System.out.println((true)?(int)2.5:3.5);System.out.println((true)?(int)2.5:3);System.out.println((true)?(int)2.5+"":3.5);结果:1.8.0_402.022这是什么?为什么仅当false的值不是double值或字符串值添加到true的值时才返回整数值?是错误吗? 最佳答案

java - Double != null 导致 NullPointerException

我有以下代码片段让我感到困扰,其中currentRate和secondCurrentRate是正确定义的Double对象:(currentRate!=null&&secondCurrentRate!=null)?currentRate*secondCurrentRate:null;这应该检查每个Double是否为空,并相应地分配值null。但是,如果secondCurrentRate为null,则会导致NullPointerException。我已将代码段更改为:(currentRate==null|secondCurrentRate==null)?null:currentRate*s

java - 将 double 转换为另一种数字类型

有些事情让我感到困惑,我没有找到太多关于VM规范的信息。这有点晦涩,如果有人能向我解释,那就太好了。这几行代码......doublemyTest=Double.MAX_VALUE;System.out.println("1.float:"+(float)myTest);System.out.println("2.int:"+(int)myTest);System.out.println("3.short:"+(short)myTest);System.out.println("4.byte:"+(byte)myTest);.....产生这个输出:float:无限整数:21474836

java - 用经度和纬度计算半径

这个问题在这里已经有了答案:Calculatedistancebetweentwolatitude-longitudepoints?(Haversineformula)(48个答案)关闭9年前。我正在尝试确定两个位置(每个位置都有自己的纬度和经度值)是否在彼此的特定距离内,例如3英里半径。我有double值来表示每个位置的纬度和经度。//Location1Doublelattitude1=40.7143528;Doublelongitude1=-74.0059731;//Location2Doublelattitude2=33.325;Doublelongitude2=44.42200

java - 如何用可变数量的十进制数字格式化 double

我正在执行一项任务,我在处理下面提到的负面情况时感到震惊如果值小于1,那么我想为其格式化(添加)4个小数点。例如,如果值为0.4567,那么我需要0.4567否则,如果该值大于1格式且只有2位数字。例如,如果值为444.9,那么我需要444.90上面提到的一切都工作正常,但遇到以下情况也就是说,如果值小于1并且以零结尾(0.1000,0.6000),打印0.2000是没有意义的,所以在这种情况下我希望输出仅为0.20下面是我的程序packagecom;importjava.text.DecimalFormat;publicclassTest{publicstaticvoidmain(S