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