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);
}