草庐IT

Double-precision_floating-point_f

全部标签

Java 的 '==' double 运算符

此方法返回“真”。为什么?publicstaticbooleanf(){doubleval=Double.MAX_VALUE/10;doublesave=val;for(inti=1;i 最佳答案 您正在从一个巨大值中减去一个非常小的值(小于1000)。小值远小于大值,最接近理论结果的可表示值仍然是原始值。基本上这是float工作方式的结果。假设我们有一些十进制浮点类型(只是为了简单起见),它只在尾数中存储5位有效数字,以及一个0到1000范围内的指数。你的例子就像写10999-1000...想想当四舍五入到5位有效数字时结果会是什

java - 如何将 float 四舍五入到最近的四分之一

有时我需要将float四舍五入到最近的四分之一,有时需要四舍五入到最近的一半。我用的一半Math.round(myFloat*2)/2f我可以用Math.round(myFloat*4)/4f。但是还有其他建议吗? 最佳答案 你只需要:Math.round(myFloat*4)/4f因为二分之一也是四分之二,所以这个方程式也可以处理你的半舍入。您不需要为二分之一或四分之一舍入做两个不同的方程式。代码示例:publicclassMain{publicstaticvoidmain(String[]args){floatcoeff=4f;

java如何使 float 的用户友好百分比输出

我有以下代码:floatfl=((float)20701682/(float)20991474);这给了我fl=0.9861948。我想将0.9861948转换为2%,因为2%已下载。我正在下载文件并计算进度。如有任何帮助,我们将不胜感激。 最佳答案 你在代码中有常量值,你应该用代表下载量和总大小的变量替换它们:floatdownloaded=50;floattotal=200;floatpercent=(100*downloaded)/total;System.out.println(String.format("%.0f%%",

java - 如何在一行中将字符串数组转换为 double 组

我有一个字符串数组:String[]guaranteedOutput=Arrays.copyOf(values,values.length,String[].class);所有字符串值都是数字。数据应转换为Double[]。问题Java中是否有单行解决方案来实现这一点,或者我们需要循环并将每个值转换为Double? 最佳答案 Java8StreamAPI允许这样做:double[]doubleValues=Arrays.stream(guaranteedOutput).mapToDouble(Double::parseDouble)

java - double 值返回 0

这个问题在这里已经有了答案:Intdivision:Whyistheresultof1/3==0?(19个回答)关闭4年前。这是一个例子:Doubled=(1/3);System.out.println(d);这会返回0,而不是0.33333...,这是应该的。有人知道吗?

java - 如何检查 Double 值是否为负数?

这个问题不太可能帮助任何future的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visitthehelpcenter.关闭10年前。如标题所示,我如何检查特定的Double是否为负数。这是如何获取Double实例(Double.parseDouble(data[2])想法、建议?

java - 最佳实践 : catching failure points in java.net.URL

JVM新手,使用Scala和Play2.0我正在将一个遗留应用程序转换为Play,一个需要通过Authorize.net进行支付处理的应用程序。查看java.net.URL源代码,有许多潜在的失败点。鉴于我在下面编写的接口(interface),您将在哪里实现try/catchblock?我需要相应地调整方法签名,可能会返回一个Either[Error,Success]来调用客户端代码importjava.net.{URL,URLEncoder}importjava.io.{BufferedReader,DataOutputStream,InputStreamReader}import

java - 为什么 anyValue 是 double 值时 Sonar 中的 anyValue % 1 "silly math"?

SonarQube提出重大违规Sillymathshouldnotbeperformed在我的代码中。描述说Certainmathoperationsarejustsillyandshouldnotbeperformedbecausetheirresultsarepredictable.Inparticular,anyValue%1issillybecauseitwillalwaysreturn0.但在我的例子中,anyValue是一个double值。这有效asintended为了我。这是实际的代码:doublev=Double.parseDouble(Utils.formatDoub

java - 错误消息 "Attempt to split long or double on the stack"表示什么?

我的代码出现以下错误:Attempttosplitlongordoubleonthestack我对这个错误的来源一无所知,也不知道如何调试它。这表明什么样的问题?我该如何解决?[ERROR][MonMay2314:29:46IST2011][(class:org/apache/jsp/dashboard_jsp,method:_jspServicesignature:(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V)Attempttosplitlongordoubleon

Java double 并使用非常小的值

我必须存储几个非常低的概率值的乘积(例如,1E-80)。由于下溢,使用原始javadouble将导致零。我不希望该值变为零,因为稍后会有一个更大的数字(例如1E100)将值置于double可以处理的范围内。因此,我自己创建了一个不同的类(MyDouble),用于保存基数部分和指数部分。在进行计算时,例如乘法,我将基数相乘,然后加上指数。使用原始double类型的程序速度很快。但是,当我使用自己的类(MyDouble)时,程序真的很慢。我认为这是因为我每次都必须创建新的对象来创建简单的操作,而垃圾收集器在不再需要这些对象时必须做很多工作。我的问题是,您认为我有更好的方法可以解决这个问题吗