Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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/4/string/5.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_String_Format_Double - Fatal编程技术网

无格式的Java双精度到字符串转换

无格式的Java双精度到字符串转换,java,string,format,double,Java,String,Format,Double,我的电话号码是654987。它是数据库中的一个ID。我想把它转换成字符串。 常规的Double.ToString(value)将其转换为科学形式,6.54987E5。我不想要的东西 我发现的其他格式化函数会检查当前区域设置,并添加适当的分隔符等。因为它是一个ID,我根本不能接受任何格式 怎么做 [编辑]澄清:我正在处理一个特殊的数据库,它将所有数字列视为双精度Double是我可以从数据库中检索的唯一(数字)类型。如果它是数据库中的整数id,请使用整数。然后它将格式化为整数。那么: Long.to

我的电话号码是654987。它是数据库中的一个ID。我想把它转换成字符串。 常规的Double.ToString(value)将其转换为科学形式,6.54987E5。我不想要的东西

我发现的其他格式化函数会检查当前区域设置,并添加适当的分隔符等。因为它是一个ID,我根本不能接受任何格式

怎么做


[编辑]澄清:我正在处理一个特殊的数据库,它将所有数字列视为双精度Double是我可以从数据库中检索的唯一(数字)类型。

如果它是数据库中的整数id,请使用整数。然后它将格式化为整数。

那么:

Long.toString(value)


怎么样
String.valueOf((长)值)

使用固定的(特别是a):

或者简单地转换为
int
(如果值的范围太大,则转换为
long
):

但话说回来:为什么在
双精度
变量中首先有一个整数值(即“整数”)

long id = 654987;
String str = Long.toString(id);

如果您存储的是一个ID(即仅用于标识另一个实体的东西,其实际数值没有意义),那么您不应该使用Double来存储它。精确几乎肯定会让你发疯

如果数据库不允许整数值,则应将ID存储为字符串。如有必要,将字符串作为要使用的整数的字符串表示形式。通过适当使用前导零,可以使字符串的字母顺序与整数的数字顺序相同

这会让你绕过这个问题。

你也可以使用

    double d = 56789;
    String s = d+"";
double value = getValue();

NumberFormat f = NumberFormat.getInstance();
f.setGroupingUsed(false);

String strVal = f.format(value);

那么Long.toString((Long)值)呢?

请参见中的顶部答案,回答相同的问题。654987是一个整数,而不是双精度。你是说别的吗?请检查:@JuanZe:设置区域设置会导致添加上千个分隔符,这是我不想要的。之所以使用double,是因为我使用的数据库将所有数字列都视为double。如果将double转换为long,有时值会更改。例如:
((长)((双)258910000002001L))
变成
258910000002000L
请不要建议
“+值”
!这是一个黑客行为,并没有以任何方式传达其意图。至少我会说这是一种糟糕的风格。好吧:)用“新字符串(值)”替换了它。新字符串(值)将有与问题提到的相同的问题,如果值是一个
double
new String(long)
在Java中不存在遗憾的是,数据库及其数据类型都已设置。我要处理的专栏是双重的,对此我无能为力。当数据库被读取时,我当然会快速地将其转换为int以供内部使用(或者您建议的字符串)。这并不重要,因为问题在于实际的转换,因为我无法更改数据库的内容或布局。当然,在一个完美的世界中,但问题的原因是我试图绕过数据库中的限制;它可以存储的唯一(数字)类型是double。这不是调用double.toString(d)吗?默认情况下,如果我没有弄错的话,它会添加科学记数法和千位分隔符(如果必要的话)。
long id = 654987;
String str = Long.toString(id);
    double d = 56789;
    String s = d+"";
double value = getValue();

NumberFormat f = NumberFormat.getInstance();
f.setGroupingUsed(false);

String strVal = f.format(value);