Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 条件数字格式?_Java_Format_Number Formatting_Numberformatter - Fatal编程技术网

Java 条件数字格式?

Java 条件数字格式?,java,format,number-formatting,numberformatter,Java,Format,Number Formatting,Numberformatter,有没有一种方法可以制作一个数字格式,它可以执行以下操作: 如果Double是一个整数,如5.0,则显示“5” 如果双精度是类似于5.6的小数,则显示“5.6” DecimalFormat实例将double格式化为字符串。代码检查精度的第十位,即小数点右边的第一位数字,如果为零,则只显示整数。否则,它将显示全部精度。我知道这是一个老问题,但这应该完全符合您的要求: var myNumber:Double = 0.0 // set to 5.0 or 5.6 to see result

有没有一种方法可以制作一个数字格式,它可以执行以下操作:

  • 如果Double是一个整数,如5.0,则显示“5”

  • 如果双精度是类似于5.6的小数,则显示“5.6”


  • DecimalFormat
    实例将double格式化为字符串。代码检查精度的第十位,即小数点右边的第一位数字,如果为零,则只显示整数。否则,它将显示全部精度。

    我知道这是一个老问题,但这应该完全符合您的要求:

        var myNumber:Double = 0.0  // set to 5.0 or 5.6 to see result
    
        let formatter = NumberFormatter()
        formatter.maximumFractionDigits = 4
        let x = formatter.string(from: NSNumber(value: myNumber)) ?? "$\(myNumber)"
        print("x = \(x)")
    

    答案绝对是肯定的。您可以编写自己的
    NumberFormatter
    子类来执行任何您喜欢的操作。我尝试了来自的解决方案,但没有任何效果,因此我正在尝试一种格式solution@DavidWallace我相信这是可以做到的,但是如果我知道在这种情况下怎么做,我就不会顺便问了,你是说Swing
    NumberFormatter
    类,或者你的意思是“数字格式”?我不知道区别;无论什么都能起作用这不会截断任何0吗?比如,如果用户输入120,它将被删除为12?你真的测试了我的代码吗?你的问题只问精度超过小数点的数字。在测试代码之前,我通常会看一两秒钟代码,但是的,它似乎确实有效,我只是不知道如何教我钓鱼,而不是屈尊于我本来合理的想法questions@KaliMa我补充了一个解释。所以你喜欢《人猿星球》的电影?
        var myNumber:Double = 0.0  // set to 5.0 or 5.6 to see result
    
        let formatter = NumberFormatter()
        formatter.maximumFractionDigits = 4
        let x = formatter.string(from: NSNumber(value: myNumber)) ?? "$\(myNumber)"
        print("x = \(x)")