Java 用小数点格式化整数

Java 用小数点格式化整数,java,formatting,decimal-point,Java,Formatting,Decimal Point,我有一个通过蓝牙从PLC设备读取的整数值,第一个数字代表一个小数位。例如:100必须格式化为10.0。另一个例子: 500 -> 50.0 491 -> 49.1 455 -> 45.5 下一行将使其正常运行: data11.put("Text2", String.format("%.1f", (float)(mArray[18] & 0xFF | mArray[19] << 8) / 10.0)); data11.put(“Text2”,String.

我有一个通过蓝牙从PLC设备读取的整数值,第一个数字代表一个小数位。例如:100必须格式化为10.0。另一个例子:

500 -> 50.0
491 -> 49.1
455 -> 45.5
下一行将使其正常运行:

data11.put("Text2", String.format("%.1f", (float)(mArray[18] & 0xFF | mArray[19] << 8) / 10.0));

data11.put(“Text2”,String.format(“%.1f)”,(float)(mArray[18]&0xFF | mArray[19]下面的方法怎么样


x=x.substring(0,x.length()-1)+“+x.substring(x.length()-1);

下面的方法怎么样

x=x.substring(0,x.length()-1)+“+x.substring(x.length()-1);

这个怎么样

System.out.println(500*0.1);
System.out.println(491*0.1);
System.out.println(455*0.1);
输出

50.0                                                                                                                                                                                                  
49.1                                                                                                                                                                                                  
45.5 
这个怎么样

System.out.println(500*0.1);
System.out.println(491*0.1);
System.out.println(455*0.1);
输出

50.0                                                                                                                                                                                                  
49.1                                                                                                                                                                                                  
45.5 

如果您关注的是用浮点表示发生的内部舍入,请考虑使用。 或合并为

System.out.println(BigDecimal.valueOf(500,1).toString());
或者你需要使用

System.out.println(BigDecimal.valueOf(500,1).toPlainString());
为了直接回答你最初的问题,即使是这样:

BigDecimal v11 = BigDecimal.valueOf(mArray[18] & 0xFF | mArray[19] << 8,1);
data11.put("Text2", String.format("%.1f", v11));

<代码> BigDimple V11= BigDigMal.ValueOf(MARLIE〔18〕和0xff.MARLY [ 19 ] < P>如果您的关注是用浮点表示发生的内部舍入,请考虑使用。 或合并为

System.out.println(BigDecimal.valueOf(500,1).toString());
或者你需要使用

System.out.println(BigDecimal.valueOf(500,1).toPlainString());
为了直接回答你最初的问题,即使是这样:

BigDecimal v11 = BigDecimal.valueOf(mArray[18] & 0xFF | mArray[19] << 8,1);
data11.put("Text2", String.format("%.1f", v11));

BigDecimal v11=BigDecimal.valueOf(mArray[18]&0xFF | mArray[19]

private static String format(int value) {
    return (value / 10) + "." + Math.abs(value % 10);
}
如果不使用负数,则可以删除
Math.abs()

private static String format(int value) {
    return (value / 10) + "." + (value % 10);
}

显然,该方法可以内联…

我将使用整数除法和模:

private static String format(int value) {
    return (value / 10) + "." + Math.abs(value % 10);
}
如果不使用负数,则可以删除
Math.abs()

private static String format(int value) {
    return (value / 10) + "." + (value % 10);
}

显然,该方法可以内联…

而不进行除法?我不相信,不。检查一下。为什么?除法有什么问题吗?你能提供更多关于
myArray
内容的详细信息吗?你想用字节运算做些什么也许是可能的,也许你正在计算某事物的十分之一,所以你可以乘以
0.1吗?谢谢你的回答。我是Java新手,我想知道String.format是否可以在不使用任何额外操作的情况下产生相同的结果。不进行分割?我不相信,不。检查。为什么?分割有什么问题吗?你能给出
myArray
的更多详细内容吗,你想做的可能是可能是字节运算,也许你正在计算十分之一的值,所以你可以用
0.1
来代替?谢谢你的回答。我是Java新手,我想知道String.format是否可以在不使用任何额外运算的情况下产生相同的结果。我喜欢它。如果数字是w,它不会给出我认为你想要的结果作为0,但如果需要,可以使用
if
-
else
处理此特殊情况。我喜欢它。如果数字为0,它不会给出我认为您想要的结果,但如果需要,可以使用
if
-
else
处理此特殊情况。