Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.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/2/ruby-on-rails/63.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_Android_String_Double - Fatal编程技术网

Java 仅显示字符串中的小数位数

Java 仅显示字符串中的小数位数,java,android,string,double,Java,Android,String,Double,我想把双精度转换成字符串。 并且只显示小数位 在这方面: Double: 123.465 String: 46 Double: 1123.465 String: 46 Double: 123.46555987 String: 46 现在我的问题是如何做到这一点,最好的方法是什么?Double可以使用转换为字符串。检查API文档。如果您有double,则可以从Java 1.6及更高版本开始自动取消绑定到double值。要获得小数,可以使用的第二个参数限制输出 s.substring(s.i

我想把双精度转换成字符串。 并且只显示小数位

在这方面:

Double: 123.465
String: 46

Double: 1123.465
String: 46

Double: 123.46555987
String: 46

现在我的问题是如何做到这一点,最好的方法是什么?

Double
可以使用转换为字符串。检查API文档。如果您有
double
,则可以从Java 1.6及更高版本开始自动取消绑定到
double
值。要获得小数,可以使用的第二个参数限制输出

 s.substring(s.indexOf("."), s.indexOf(".")+2)
或者使用四舍五入到两位小数

Double.valueOf(Math.round((d/(long)d)*100)/100).toString() 

这不是最好的方法,但它很有效。只需将123.456更改为您想要的任何值,或者将其放入一个方法中

public class Test {
    public static void main(String args[]) {
        double fractionalPart = 123.456 % 1;
        DecimalFormat twoDForm = new DecimalFormat("#.00");
        System.out.println(String.valueOf(
                Double.valueOf(twoDForm.format(fractionalPart))).substring(2));
    }
}
这可能会奏效:

Double d = 123.4567;
String stringRep = Double.toString(d).split(".")[1];
//Print or use stringRep
这应该对你有帮助

public static int twoDecimal(double original)
{
    BigDecimal bd = new BigDecimal(original % 1);
    BigDecimal rounded = bd.setScale(2, BigDecimal.ROUND_DOWN);

    return (int) (rounded.doubleValue() * 100);
}

“最好的方法是什么?”你试过什么吗?如果是,请在此处张贴代码。。如果没有,请在尝试后返回。将double转换为string并在小数点后拆分字符串。当他们成为您的同事时,您打算为他们编码此人的代码吗?不,我只是想帮他一把,我实际上只写了两行。如果是大量的代码,我就不会费心了。这不会提供OP所需的确切输出。除了提供单词“String:”之外,它会按照OP的要求提供小数点的位置和格式。
public static int twoDecimal(double original)
{
    BigDecimal bd = new BigDecimal(original % 1);
    BigDecimal rounded = bd.setScale(2, BigDecimal.ROUND_DOWN);

    return (int) (rounded.doubleValue() * 100);
}