我有这样的值:421.18834我必须使用如下所示的掩码正确地对其进行数学舍入:0.050.040.1例如,如果掩码是0.04,我必须得到值421.20,因为.18比.16更接近.20。我使用Google发现的所有功能都不起作用。你能帮帮我吗? 最佳答案 doubleinitial=421.18834;doublerange=0.04;intfactor=Math.round(initial/range);//10530-willroundtocorrectvaluedoubleresult=factor*range;//421.2
如何在不使用舍入的情况下将java中的float原语减少到两位小数?:123.99999to123.99-8.022222to-8.02不应该四舍五入,只保留两位小数。第二点是如何验证或计算该点后有多少位小数?123.99willgivetrueor2123.999willgivefalseor3更新数字是字符串输入,所以我想我会按照建议使用它;对于任何异常,我将只使用inttry/catchblock。欢迎提出任何如何使这项工作更智能的建议:publicstaticfloatonlyTwoDecimalPlaces(Stringnumber){StringBuildersbFloat
我正在尝试对用户输入进行四舍五入,但我似乎可以将我的double四舍五入为int。基本上,当我输入4.4999时,它不会四舍五入到5。有什么想法吗? 最佳答案 Math.ceil()返回上限值。它不能更改它作为参数的变量的值,因为Java按值传递参数。所以你需要做hours=Math.ceil(hours); 关于java-Math.round和Math.ceil不工作,我们在StackOverflow上找到一个类似的问题: https://stackover
看似简单的问题,但我的数学真的很烂而且我在网上搜索过的几个例子似乎都不适合我。(结果只是返回与输入等相同的值)例如..但它是用C而不是JavaRoundtoNext.05inC所以我的目标是我有%.1f格式float或double或bigdecimal并且想要四舍五入到最接近的.5example:1.3-->1.55.5-->5.52.4-->2.53.6-->4.07.9-->8.0我尝试了以下示例但没有成功:(下面仅输出1.3,这是原始值。我希望它是1.5publicclasstmp{publicstaticvoidmain(String[]args){doublefoo=1.3;
java.util.concurrent.ConcurrentHashMap的构造方法之一:publicConcurrentHashMap(intinitialCapacity){if(initialCapacity=(MAXIMUM_CAPACITY>>>1))?MAXIMUM_CAPACITY:tableSizeFor(initialCapacity+(initialCapacity>>>1)+1));this.sizeCtl=cap;}方法“tableSizeFor(...)”的参数是什么意思?initialCapacity+(initialCapacity>>>1)+1我认为参
我在用Java执行计算时遇到了一些困难。这是我正在尝试做的-((0.053800*(500000/1000))+4)*0.85在我的java应用程序中,它返回26.264999999999997,如果四舍五入到小数点后两位,则为26.26。但在MSExcel中,相同的公式返回26.265000..因此四舍五入的结果是26.27。如果我的Java应用程序返回不正确的值,我该怎么做才能更正它? 最佳答案 参见myanswerhere了解正在发生的事情。 关于java-Java中的计算问题,我
给定以下代码,我希望它返回“float=32000.0001”。但相反,它返回“float=32000.0”。System.out.println("float="+Float.parseFloat("32000.0001"));我可以做些什么来防止/控制舍入?我希望不四舍五入地返回完整值。 最佳答案 float只有24位精度,不足以保存您的值的位数。四舍五入不是由于解析,而是由于数字的大小。如果需要float,则必须使用double,如果需要任意精度,则必须使用BigDecimal。
这个问题在这里已经有了答案:Roundingupanumbertonearestmultipleof5(24个答案)关闭去年。如何在Java中舍入到特定的倍数?在excel中,有一个mround函数,可以像这样轻松地舍入到指定的倍数:mRound(variable,multiple)所以mRound(x,3)将返回9如果x=7.9和6如果x=7.2。到目前为止,我发现的所有舍入函数总是舍入到最接近的整数或指定的小数位数,但我希望能够更改每个变量的倍数。有谁知道什么功能最适合这种情况?
SO社区是对的,在你问性能问题之前分析你的代码似乎比我随机猜测的方法更有意义:-)我分析了我的代码(非常密集的数学)并且没有意识到我的70%以上代码显然在我认为不是减速、小数点四舍五入来源的部分。staticdoubleroundTwoDecimals(doubled){DecimalFormattwoDForm=newDecimalFormat("#.###");returnDouble.valueOf(twoDForm.format(d));}我的问题是我得到的十进制数字通常是.01、.02等,但有时我得到类似.070000000001的数字(我真的只关心0.07,但浮点精度导致我
我正在尝试找到一种将值四舍五入到最接近的0.05的方法。例如:0.93舍入为0.950.81舍入为0.800.65保持0.650.68到0.700.67到0.65在Java中有没有一种简单的方法可以做到这一点? 最佳答案 执行此操作的一个选项如下:将该值乘以20。使用Math.round舍入到最接近的整数。再除以20。例如:doublerounded=Math.round(x*20.0)/20.0;希望这对您有所帮助! 关于Java四舍五入到最接近的0.05,我们在StackOverfl