Java 将十进制值四舍五入到小数点后的两位数

Java 将十进制值四舍五入到小数点后的两位数,java,types,floating-point,annotations,data-annotations,Java,Types,Floating Point,Annotations,Data Annotations,将浮点值四舍五入到两位小数的最佳方法是什么 例如,我有float f1=123.9876 但是我需要123.98 有任何注释可以做到这一点吗?您可以使用BigDecimal类手动完成 float f=123.456778f; BigDecimal decimalNo=new BigDecimal(f); decimalNo=decimalNo.setScale(2,BigDecimal.ROUND_HALF_UP); decimalNo=123.45这取决于您想要使用哪种类型的舍入机制?是的,

将浮点值四舍五入到两位小数的最佳方法是什么

例如,我有
float f1=123.9876

但是我需要
123.98


有任何注释可以做到这一点吗?

您可以使用BigDecimal类手动完成

float f=123.456778f;
BigDecimal decimalNo=new BigDecimal(f);
decimalNo=decimalNo.setScale(2,BigDecimal.ROUND_HALF_UP);

decimalNo=123.45

这取决于您想要使用哪种类型的舍入机制?是的,通过正则表达式可以实现这一点吗?是的,的确,它将与BigDecimal一起工作。请注意,浮点类型(如float或double)不一定会成功。对于FP值,通常不舍入值,只舍入值的输出(即转换为字符串),使用多种舍入output.FWIW的方法之一,可以使用
BigDecimal decimalNo=BigDecimal.valueOf(f)而不是
新的BigDecimal(f)。但请参见1)。当任何人想要在数据库或文件中存储值时,都可能需要舍入。(二)。是的,您是对的,valueOf()在这里更有意义。即使存储在DB或文件中,您仍然在舍入输出(好的,不只是转换为字符串--转换为任何合适的值),而不是原始值。在DB中,双精度值以数字格式而不是字符串格式保存。(可以将其转换为字符串,但需要时需要将其舍入为原始值,这两个选项都是情景设置的)