Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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/flash/4.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 获取double的纯字符串表示形式,而不经过BigDecimal_Java_String_Double - Fatal编程技术网

Java 获取double的纯字符串表示形式,而不经过BigDecimal

Java 获取double的纯字符串表示形式,而不经过BigDecimal,java,string,double,Java,String,Double,使用Java中的双倍数字,是否可以获得纯字符串表示(例如,654987)而不是科学格式(例如,6.54987E5) 现在我知道我们可以使用BigDecimal.toPlainString()方法,但是创建BigDecimal只是为了得到字符串(真的吗?)对我来说似乎有点草率和低效。 有人知道另一种方法吗 double d = 12345678; System.out.println(d); System.out.println(String.format("%.0f", d)); 1.234

使用Java中的双倍数字,是否可以获得纯字符串表示(例如,
654987
)而不是科学格式(例如,
6.54987E5

现在我知道我们可以使用
BigDecimal.toPlainString()
方法,但是创建
BigDecimal
只是为了得到
字符串(真的吗?)对我来说似乎有点草率和低效。
有人知道另一种方法吗

double d = 12345678;

System.out.println(d);
System.out.println(String.format("%.0f", d));
1.2345678E7 12345678 请注意,如果只需要打印此字符串表示形式,只需使用
System.out.printf(“%.0f”,d)

如果您根本不想进行任何舍入,那么我将坚持您的建议,即
(新的BigDecimal(d)).toPlainString()

使用/

示例中的基本用法:

NumberFormat nf = NumberFormat.getInstance();
output.println(nf.format(myNumber));

对于
DecimalFormat
,可以传入格式化模式/区域设置信息以格式化数字。这是一个很好的使用
十进制格式的教程

您可以这样做:

double number = 654987;

String plain = String.format("%.0f", number);

我不需要打印,我只需要字符串作为其他用途。但你的答案似乎有效!:)多谢。可以肯定的是,
%0.f
的意义是什么?这是否意味着打印时没有任何小数位数(小数点后的数字)?@user1508893是-换句话说,它舍入到最接近的整数。你可以用
%.1f
四舍五入到小数点后1位,用
%.2f
四舍五入到小数点后2位等等。噢,那我就不行了。有没有一种方法可以防止Java将数字舍入?我不想要真正的普通绳子。(不四舍五入或任何形式)只要
%f
(没有指定宽度的数字)就行了,不是吗?@user1508893
%f
将四舍五入到小数点后6位。使用此方法将添加COMA(654987)。您可以使用
新的十进制格式(“######”
为了避免使用逗号,请参见本教程中表格中的第二个示例linked.DecimalFormat效果很好,我同意,但是有没有办法用NumberFormat指定格式?NumberFormat只是DecimalFormat的基类,而且只有一些通用的工厂方法内置于构建中——有什么特别的原因不能(或不想)使用DecimalFormat吗?
double number = 654987;

String plain = String.format("%.0f", number);