Tag: 浮点

在Java中,如何删除float中的所有0?

我想像这样改变浮动: 10.5000 – > 10.5 10.0000 – > 10 如何删除小数点后的所有零,并将其更改为float(如果有非零)或int(如果只有零)? 提前致谢。

tan 45给了我0.9999

为什么tan 45 (弧度为0.7853981633974483)给我0.9999 ? 以下代码有什么问题? System.out.println(Math.tan(Math.toRadians(45.0)) ); 我不认为这里有任何错字。 那么这里的解决方案是什么?

如何检查double是否最多有n个小数位?

目前我有这个方法: static boolean checkDecimalPlaces(double d, int decimalPlaces){ if (d==0) return true; double multiplier = Math.pow(10, decimalPlaces); double check = d * multiplier; check = Math.round(check); check = check/multiplier; return (d==check); } 但是这个方法对于checkDecmialPlaces(649632196443.4279, 4)是失败的checkDecmialPlaces(649632196443.4279, 4)可能是因为我在基数为2的数字上进行了10次数学运算。 那么如何才能正确完成这项检查呢? 我想到获得double值的字符串表示,然后用regexp检查 – 但这感觉很奇怪。 编辑:谢谢你的所有答案。 在某些情况下,我真的得到了一个双倍,在这些情况下,我实现了以下内容: private static boolean checkDecimalPlaces(double d, int decimalPlaces) { if (d == 0) return true; final […]

DecimalFormat舍入

这是一个小代码来说明我所看到的 float floater = 59.999f; DecimalFormat df = new DecimalFormat(“00.0”); System.out.println(df.format(floater)); 这打印: 60.0 我想要打印 59.9 我需要做什么?

Java String Manipulation:根据模式从字符串中提取整数和浮点数

我有一个String的以下两个可能的内容。 显然,金额总是不同的,我想提取关键信息和 Case 0: pricesString = “” Case 1: pricesString = “$0.023” Case 2: pricesString = “10+: $1.46 100+: $0.16 500+: $0.04” 在Case 0我想什么都不做。 在Case 1我想执行: article.addPrice(1, 0.023); 在Case 2我想执行: article.addPrice(10, 1.46); article.addPrice(100, 0.16); article.addPrice(500, 0.04); 如何提取此信息,以便我可以使用包含的浮点数和整数值调用article.addPrice?

格式化字符串以删除科学记数法 – Java

我有以下代码,它分割一串数字(用空格分隔),然后创建一个浮点数组: //Split the string and then build a float array with the values. String[] tabOfFloatString = value.split(” “); int length = tabOfFloatString.length; System.out.println(“Length of float string is” + length); float[] floatsArray = new float[length]; for (int l=0; l<length; l++) { float res = Float.parseFloat(tabOfFloatString[l]); System.out.println("Float is " + res); floatsArray[l]=res; } 问题是字符串中的某些值是用科学记数法格式化的 – 例如它们读取-3.04567E-8。 我想要做的是最终得到一个不包含E号的浮点数。 […]

每个浮点数都可以完全表示为双精度数吗?

float变量的每个可能值都可以精确地表示在一个double变量中吗? 换句话说,对于所有可能的值, X将成功: float f1 = X; double d = f1; float f2 = (float)d; if(f1 == f2) System.out.println(“Success!”); else System.out.println(“Failure!”); 我怀疑是没有例外,或者只有边缘情况(如+/-无穷大或NaN)。 编辑 :问题的原始措辞令人困惑(说明两种方式,一种方式将回答“否”,另一种方式将回答“是”同一答案)。 我已经对它进行了重写,以便与问题标题相匹配。

Java如何将浮点数转换为字符串

这是我正在看的东西: float p=1.15f; BigDecimal bdp=new BigDecimal(p); float q=1.1499999f; float r=1.14999999f; System.out.println(p); //1.15 System.out.println(bdp); //1.14999997615814208984375 System.out.println(q); //1.1499999 System.out.println(r); //1.15 所以我理解“p”1.15的十进制值不能用二进制表示。 所以大的十进制“bdp”输出对我来说很有意义……这就是浮点数的实际值。 问题1 当浮点“p”转换回字符串以进行输出时(如1.15),舍入的方式/位置(从内部1.149..375到1.15)? 它在文档中指定了哪里? toString javadoc并没有真正的帮助(至少我)。 我确实在语言规范中看到了这个: float和double类型的元素是可以分别使用IEEE 754 32位单精度和64位双精度二进制浮点格式表示的值。 维基百科的IEEE 754文章给出了这样的结论 : 这给出了6到9个有效十进制数字精度(如果一个十进制字符串最多有6个有效小数被转换为IEEE 754单精度,然后转换回相同数量的有效小数,则最终字符串应与原始字符串匹配; 问题2 所以这似乎是Java / IEEE 754浮点数应该如何工作? 我保证浮点/字符串转换/表示的准确性达到一定数量的数字(如“p”和“q”),如果超过这个数字,Java将进行一些舍入显示(如“r”) “)? 感谢帮助。

检查两个float / double值是否完全相等

什么是比较两个浮点值以获得精确相等的优雅,可读和非冗长的方法? 听起来很简单,这是一个邪恶的问题。 ==运算符不能完成NaN的工作,也有零特殊处理: (+0.0 == -0.0) -> true Double.NaN == Double.NaN -> false 但我想确定两个值是否完全相同(但我不关心不同的NaN模式,因此任何NaN ==任何其他NaN – > true)。 我可以用这个丑陋的Monster代码做到这一点: Double.doubleToLongBits(a) == Double.doubleToLongBits(b) 有没有更好的方法来写这个(并使意图明显)?

Java:浮点数/整数的字节数

我有一个从x-plane通过UDP发送的字节数组。 字节(4)都是浮点数或整数…我试图将它们转换为浮点数但到目前为止没有运气… 示例数组:字节数据[41] = { – 66,30,73,0}; 如何将4个字节转换为int或float并且不浮动使用8个字节?