Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java 1.5中截断浮点,不包括setRoundingMode_Java_Format_Jdk1.5 - Fatal编程技术网

在java 1.5中截断浮点,不包括setRoundingMode

在java 1.5中截断浮点,不包括setRoundingMode,java,format,jdk1.5,Java,Format,Jdk1.5,我想截断Java中的浮点值 以下是我的要求: 如果我有12.49688f,它应该打印为12.49,不进行四舍五入 如果双精度为12.456,则应按12.45打印,不进行舍入 在任何情况下,如果该值类似于12.0,则应仅打印为12 条件3应始终牢记在心。它应与 截断逻辑 附言:我正在使用Java1.5。所以我知道如何在Java1.6中实现这一点,即使用十进制格式并调用setroundingMode()Method。 在将数字提供给十进制格式之前,我需要知道Java 1.5的乘法、使用和除法。这与截

我想截断Java中的浮点值

以下是我的要求:

  • 如果我有12.49688f,它应该打印为12.49,不进行四舍五入
  • 如果双精度为12.456,则应按12.45打印,不进行舍入
  • 在任何情况下,如果该值类似于12.0,则应仅打印为12
  • 条件3应始终牢记在心。它应与 截断逻辑

    附言:我正在使用Java1.5。所以我知道如何在Java1.6中实现这一点,即使用十进制格式并调用
    setroundingMode()
    Method。 在将数字提供给十进制格式之前,我需要知道Java 1.5的乘法、使用和除法。这与截断圆IG相同

    // Replace N with the desired number of decimals after the comma
    number = Math.floor(1eN * number) / 1eN
    
    这并不完美,因为浮点计算中存在舍入错误,所以您仍然必须为小数格式指定N个小数

    一个(更昂贵,但也更合乎逻辑)的替代方法是使用一个

    在将数字提供给十进制格式之前,先进行乘法、使用和除法运算。这与截断圆IG相同

    // Replace N with the desired number of decimals after the comma
    number = Math.floor(1eN * number) / 1eN
    
    这并不完美,因为浮点计算中存在舍入错误,所以您仍然必须为小数格式指定N个小数

    一个(更昂贵,但也更合乎逻辑)的替代方法是使用一个


    将其转换为字符串,并截断句点后第二个数字后面的任何内容。 修剪“0”和“.”,如果有“.”


    (经过测试,适用于我的环境)

    将其转换为字符串,并截断句点后第二位数字后的任何内容。 修剪“0”和“.”,如果有“.”


    (经过测试,在我的环境中工作)

    @stefan bachert如果我输入12.2,它应该给我12.20?@stefan bachert如果我输入12.2,它应该给我12.20?
    String x = Double.toString (12.456); // or Float.toString (12.49688f);
    
    int pos = x.indexOf ('.');  // 
    if (pos >= 0) {
      int end = Math.min(pos + 2, x.length() - 1); // truncate after 2 digits
      while (x.charAt (end) == '0') end --;  // trim 0
      if (x.charAt (end) == '.') end --; // trim .
      x = x.substring(0, end + 1);       // really truncate
    }