我使用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位数。谢谢。
答案 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());