Java me J2ME-如何在不使用幂10表示法的情况下将双精度转换为字符串(E-05)

Java me J2ME-如何在不使用幂10表示法的情况下将双精度转换为字符串(E-05),java-me,Java Me,我有双重价值。我想将它存储在不带out E符号的字符串中(在J2ME中) 范例 双值6.887578324E9 要显示为6887578342,请查看本文: 您可以使用[NumberFormat][2]或[DecimalFormat][3]类来实现所需的内容 代码如下: NumberFormat f = NumberFormat.getInstance(); f.setGroupingUsed(false); String refinedNumber = f.format(doubleVariab

我有双重价值。我想将它存储在不带out E符号的字符串中(在J2ME中)

范例

双值6.887578324E9
要显示为6887578342,请查看本文:

您可以使用
[NumberFormat][2]
[DecimalFormat][3]
类来实现所需的内容

代码如下:

NumberFormat f = NumberFormat.getInstance();
f.setGroupingUsed(false);
String refinedNumber = f.format(doubleVariable);

您可以创建自己的方法来实现这一点,或者使用一些现有的库。 例如,Javolution为您提供了类和方法 格式(双d,整数,布尔科学,布尔显示零,可追加a) 检查一下,它有很多很好的实用程序,但是如果您只需要格式化数字,只需编写您自己的方法。 这里有一个大数字的快速破解

    private static String nosci(double d) {
    if(d < 0){
        return "-" + nosci(-d);
    }
    String javaString = String.valueOf(d);
    int indexOfE =javaString.indexOf("E"); 
    if(indexOfE == -1){
        return javaString;
    }
    StringBuffer sb = new StringBuffer();
    if(d > 1){//big number
        int exp = Integer.parseInt(javaString.substring(indexOfE + 1));
        String sciDecimal = javaString.substring(2, indexOfE);
        int sciDecimalLength = sciDecimal.length();
        if(exp == sciDecimalLength){
            sb.append(javaString.charAt(0));
            sb.append(sciDecimal);              
        }else if(exp > sciDecimalLength){
            sb.append(javaString.charAt(0));
            sb.append(sciDecimal);
            for(int i = 0; i < exp - sciDecimalLength; i++){
                sb.append('0');
            }
        }else if(exp < sciDecimalLength){
            sb.append(javaString.charAt(0));
            sb.append(sciDecimal.substring(0, exp));
            sb.append('.');
            for(int i = exp; i < sciDecimalLength ; i++){
                sb.append(sciDecimal.charAt(i));
            }
        }
      return sb.toString();
    }else{
        //for little numbers use the default or you will
        //loose accuracy
        return javaString;
    }       


}
私有静态字符串nosci(双d){
if(d<0){
返回“-”+nosci(-d);
}
String javaString=String.valueOf(d);
int indexOfE=javaString.indexOf(“E”);
如果(indexOfE==-1){
返回javaString;
}
StringBuffer sb=新的StringBuffer();
如果(d>1){//大数
int exp=Integer.parseInt(javaString.substring(indexOfE+1));
String sciDecimal=javaString.substring(2,indexOfE);
int sciDecimalLength=sciDecimal.length();
如果(exp==sciDecimalLength){
sb.append(javaString.charAt(0));
某人追加(小数);
}else if(exp>sciDecimalLength){
sb.append(javaString.charAt(0));
某人追加(小数);
for(int i=0;i
通常,您可以使用下面的一段代码,但不能用于j2me

BigDecimal.valueOf(doubleVariable)

您可以使用Java
格式化程序
,只需指定字符串的小数位数即可

例如,将双精度转换为一个十进制数:

Formatter format = new Formatter();
String mystring = format.formatNumber(DOUBLENUMBERVARIABLE,1);
System.out.println(mystring );

谢谢你的回复。我认为NumberFormat只在JAVA中可用。不在J2ME中,它们似乎是可用的:NumberFormat是java.text。当我尝试导入java.text时,在“java.”下只能看到java.io.*、java.lang.*、java.lang.ref.*、java.nio.*、java.rmi.*、java.util.*。我遗漏了什么吗?我正在使用blackberry java插件进行Eclipse。让我试试……我认为它不会起作用:(.看看这个:(最后,他们也谈到了blackberry)-1
NumberFormat
在1.0(JSR 37)和1.1(JSR 139)版本中不可用-1
BigDecimal
在1.0(JSR 37)和1.1(JSR 139)版本中不可用哦,你是对的,我刚刚错过了J2me关键字。我上面写的句子非常自信。谢谢你的评论。J2me没有格式化程序类。