当前位置: 首页 > 知识库问答 >
问题:

删除浮点数的尾随数字

韦繁
2023-03-14

我的java程序中有一些浮点变量:

float var1=1.23456f;
float var2=2.34567f;

在我的计算中,浮点变量小数点后的位数会增加或减少,以保持精度。例如,在一些计算系统之后。出来println(var1);可打印:

6.35

9.4500082E

88.25214

我想将这些值四舍五入到小数点后的3位,并删除后续的小数位数,以便对float进行四舍五入,如下所示:

6.350   9.450   88.252

据我所知,数字格式和字符串。format()以格式化字符串的形式返回输出。如何将输出作为四舍五入浮点,以便在计算中进一步使用它?我可以对我的float(float)变量(实例)应用一条规则来始终舍入/删除小数点后3位的尾随数字吗?

共有3个答案

南宫云
2023-03-14

使用简单的helper方法对任意位置进行舍入:

 public static void main(String[] args) throws IOException {
    float fl = 1.2345f;
    System.out.println(round(fl, 3));
}

public static float round(float source, int positions) {
    long multiplier = (long) Math.pow(10, positions);
    return return ((float)((int) (source * multiplier)) / multiplier);
}

请注意,这个片段仅演示了这个想法,由于长时间溢出,它被限制在18个位置。

刘瀚
2023-03-14

一种(不是很有效的)方法是仍然使用NumberFormat类返回String(3位数字),然后使用Float.parseFloat()将其变回浮点数。

易俊远
2023-03-14

不,你不能得到“四舍五入浮动”浮点不存储十进制数。如果要使用特定数量的十进制数字进行计算,请使用BigDecimal。

其他答案都无法满足你的实际需求。

 类似资料:
  • 问题内容: 我正在寻找一种将数字转换为字符串格式的方式,删除任何多余的“ .0” 输入数据是浮点数和字符串的混合。所需的输出: 0->‘0’ 0.0->‘0’ 0.1->‘0.1’ 1.0->‘1’ 我想出了以下生成器表达式,但是我想知道是否有更快的方法: 进行真值检查可防止0变成空字符串。 编辑:我现在或多或少可以接受的解决方案是这样的: 似乎没有一种优雅的方法可以在python中处理这种(相当

  • 我正在尝试设置一个 nodemcu 模块来收集来自温度传感器的数据,并使用 mqtt pubsubclient 将其发送到我的 mqtt 代理,但这不是问题所在。 我正在尝试以只有一个小数的格式发送温度,此时我已经成功地将其向上或向下舍入,但格式不正确。截至目前,它将温度四舍五入为24.50,27.80,23.10等。我想删除尾随的zereos,所以它变成24.5,27.8,23.1等。 到目前为

  • 问题内容: 我是否错过了一个标准API调用,该调用从数字中删除了不重要的零? 例如 Number.toFixed()和Number.toPrecision()并不是我想要的。 问题答案: 如果将其转换为字符串,它将不会显示任何结尾的零,因为它是作为数字而不是字符串创建的,因此不会首先存储在变量中。

  • 我有一个类似137.57667565656的浮点数,但我想对其进行四舍五入,使小数点后只有两个尾随数字,就像新的浮点数将是137.58一样。 到目前为止,我试过: 但不幸的是,它将我的值舍入到137.00。它把小数加成零,为什么? 我如何才能实现上述目标?

  • 问题内容: 我是Java的新手,尝试使用BigDecimal(例如99999999.99)并将其转换为字符串,但没有小数位和尾随数字。另外,我不想在数字中加上逗号,也不需要四舍五入。 我试过了: 但不支持BigDecimal。 有任何想法吗? 非常感谢。 问题答案: 尝试

  • 问题内容: 我有字符串(来自DB),其中可能包含数字值。如果它包含数值,我想删除尾随零,例如: ,仅适用于第一个,而不适用于第二个。 很多答案都指向使用,但是我得到的可能不是数字。因此,我认为更好的解决方案可能是通过Regex。 问题答案: 有可能: 我懒又傻,只是 使用相同的解决方案,而不是某些注释中提到的,以便于理解