相关疑难解决方法(0)

如何使用Java在没有科学记数法的情况下打印double值?

我想在没有指数形式的Java中打印double值.

double dexp = 12345678;
System.out.println("dexp: "+dexp);
Run Code Online (Sandbox Code Playgroud)

它显示了这个E符号:1.2345678E7.

我希望它像这样打印: 12345678

防止这种情况的最佳方法是什么?

java double

208
推荐指数
8
解决办法
28万
查看次数

如何将Excel单元格中的数字字符串作为字符串(而非数字)读取?

  1. 我有这样的内容的excel文件:

    • A1:SomeString

    • A2:2

    所有字段都设置为String格式.

  2. 当我使用POI在java中读取文件时,它告诉A2是数字单元格格式.

  3. 问题是A2中的值可以是2或2.0(我希望能够区分它们)所以我不能只使用它.toString().

如何将值读取为字符串?

java excel apache-poi

137
推荐指数
7
解决办法
23万
查看次数

无法从数字单元格"Poi"获取文本值

我正在尝试使用Excel中的电子表格中的数据,但总是出现此错误,已尝试将工作表格式化为文本和数字,但错误仍然存​​在.

我看到一个人使用它解决cell.setCellType ( Cell.CELL_TYPE_STRING ) ;但我不知道我的代码在哪里适合这段.

WebElement searchbox = driver.findElement(By.name("j_username"));
WebElement searchbox2 = driver.findElement(By.name("j_password"));         

try {
    FileInputStream file = new FileInputStream(new File("C:\\paulo.xls")); 
    HSSFWorkbook workbook = new HSSFWorkbook(file);
    HSSFSheet sheet = workbook.getSheetAt(0);

    for (int i=1; i <= sheet.getLastRowNum(); i++){
        String j_username = sheet.getRow(i).getCell(0).getStringCellValue();
        String j_password = sheet.getRow(i).getCell(0).getStringCellValue();

        searchbox.sendKeys(j_username);
        searchbox2.sendKeys(j_password);
        searchbox.submit();  

        driver.manage().timeouts().implicitlyWait(10000, TimeUnit.MILLISECONDS);
    }

    workbook.close();
    file.close();
} catch (FileNotFoundException fnfe) {
    fnfe.printStackTrace();
} catch (IOException ioe) {
    ioe.printStackTrace();
Run Code Online (Sandbox Code Playgroud)

java apache-poi

57
推荐指数
5
解决办法
11万
查看次数

将大十进制数转换为没有指数格式的双精度数

我正在对高十进制精度 BigDecimal 对象进行计算。

我正在使用需要双精度参数的第三方库。当我尝试将其转换为 double 时,我得到的是指数格式而不是小数格式的值。

BigDecimal 0.000035000000000
Double 3.5E-5
Run Code Online (Sandbox Code Playgroud)
BigDecimal bd; 
BigDecimal(0.0000349999999995631583260546904057264328002929687500);
bd= bd.setScale(15,BigDecimal.ROUND_CEILING);

Log.i("bd","bd "+bd.toPlainString());
Log.i("bd","double"+bd.doubleValue());
Run Code Online (Sandbox Code Playgroud)

我发现了多种方法可以将这个 3.5E-5 值转换为正确的十进制点数,但仅限于字符串格式。而我需要双倍的价值

能够在 String 对象中没有指数但不是双

  DecimalFormat df = new DecimalFormat("#");
        df.setMaximumFractionDigits(16);
       String test=df.format(bd,doubleValue());
        System.out.println("op2 "+test);
        Double test1=Double.parseDouble(test);
        System.out.println("op2 "+test1);
Run Code Online (Sandbox Code Playgroud)

输出 op2 .000035 op2 3.5E-5

自从几天以来,我一直在努力寻找解决方案,因为我无法控制需要值加倍的 3rd 方库

推荐链接

格式 BigDecimal 不带科学记数法全精度

将java中的指数值转换为数字格式

Java中从指数形式到十进制的转换

如何解决 Java 四舍五入问题

没有 E 的 Java BigDecimal

如何避免使用科学记数法?

我的问题与这些链接不同,我不希望 double 作为没有指数的字符串,而我只希望它采用 double 格式。

编辑

如果传递的 double 值是指数格式,则基于 NDK 的库将进一步对此对象进行计算,这将导致更多的小数点和更大的指数值。所以,我想传递一个没有 E 的简单 double

java double android bigdecimal

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

java ×4

apache-poi ×2

double ×2

android ×1

bigdecimal ×1

excel ×1