字符串修剪出来的长度不正确

时间:2013-11-19 03:26:03

标签: java string

我使用Java来确定double的长度,作为更大程序的一部分。此时双倍是666但长度返回为5,这是一个大问题。我在这里阅读了另一个问题,但是这对我来说不起作用。我将展示我的代码以及尝试使用结果模拟以前的解决方案。

我的原始代码:

double Real = 666;
int lengthTest = String.valueOf(Real).trim().length();
System.out.println("Test: " + lengthTest);

这打印5

不起作用的修改,基本上只是将代码分成多行。

    double Real = 666;
    String part = Real + "";
    part = part.trim();
    int newLength = part.length();
    System.out.println("new length : " + newLength);

这也打印5。

显然,我想要打印我有多少位数,在这种情况下应该显示3位。

为了更大的图片,如果它有助于我将数字输入分解成组成部分,并确保它们都不超过限制。 ie:xx.yyezz其中xx可以是5位数,yy可以是5位数,zz可以是2位数。谢谢。

2 个答案:

答案 0 :(得分:9)

那是因为你正在使用双倍。

String.valueOf(Real); // returns 666.0, i.e. length 5

首先尝试将其转换为整数:

Integer simple = (int) Real;
String.valueOf(simple); // returns 666, i.e. length 3.

答案 1 :(得分:1)

双倍总是在数字后面加一个小数位。所以数字看起来像666.0。你可以通过打印String.valueOf(Real)来看到这一点。您应该使用int代替或将double转换为int:

double Real = 666;
int realInt = (int) Real;
System.out.println(String.valueOf(realInt).length());