Jea*_*ett 9 java string-formatting
我知道如何格式化double以仅保留可用的小数位(DP),最多只能保留一定数量的DP.此示例最多可保留4个DP.
double d = 1.0;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1"
double d = 1.23;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1.23"
double d = 1.2345678;
DecimalFormat df = new DecimalFormat("#.####");
System.out.print(df.format(d)); // returns "1.2346", rounding off: bad!
Run Code Online (Sandbox Code Playgroud)
现在我想要整数,例如1.0在"1"没有必要的情况下返回.0,#格式字符确实提供了该功能.但是我该如何确保数字永远不会变圆呢?是否有任何其他的方式比任意长的链其他#如"#.###########################################"?
或者我应该使用double到string的默认转换,并截断".0"它在结尾处是否出现:
String s = "" + d;
if(s.substring(s.length()-2).equals(".0")) {
s=s.substring(0, s.length()-2);
}
Run Code Online (Sandbox Code Playgroud)
这两种方式看起来都非常笨拙.
Pet*_*rey 16
我使用以下内容
double d =
String s = (long) d == d ? "" + (long) d : "" + d;
Run Code Online (Sandbox Code Playgroud)
如果你需要Double而不是double.(就我个人而言,我会避免使用包装器)
Double d =
String s = d.longValue() == d ? "" + d.longValue() : "" + d;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10264 次 |
| 最近记录: |