在Java中对齐双精度列表中的小数
以下是代码部分:在Java中对齐双精度列表中的小数,java,alignment,double,decimal,Java,Alignment,Double,Decimal,以下是代码部分: System.out.println("The values of pi from term " + (userNum - 9) + " to term " + userNum + " are:"); for (int x = 1; x < userNum; x++) { if (x % 2 == 1) sum = sum + (4.0
System.out.println("The values of pi from term " + (userNum - 9) + " to term " + userNum + " are:");
for (int x = 1; x < userNum; x++)
{
if (x % 2 == 1)
sum = sum + (4.0/(2 * x - 1));
else
sum = sum - (4.0/(2 * x - 1));
System.out.println("Term " + (x) + ": " + sum);
}
第10项的小数需要与其他项对齐。如何在Java中实现这一点?谢谢。如果您使用,您可以使用StringUtils
类来完成您需要的:
System.out.println("Term " +
StringUtils.leftPad("" + x, (userNum.length() - x.length()), ' ')
+ ": " + sum);
如果使用,则可以使用StringUtils
类来完成所需的工作:
System.out.println("Term " +
StringUtils.leftPad("" + x, (userNum.length() - x.length()), ' ')
+ ": " + sum);
System.out.printf
类似于(但不是)C printf方法。您可以使用它执行以下操作:
int spaces = (int)Math.log10(Math.abs(userNum)) + 1;
String myFormat = "Term %" + spaces +"d: %.10f\n";
//inside the for loop
System.out.printf(myFormat , x, sum);
已编辑:可以使用%2d使数字使用2个空格,如果该数字更大,则将使用更多空格
更多信息:
- (搜索printf方法)
int spaces = (int)Math.log10(Math.abs(userNum)) + 1;
String myFormat = "Term %" + spaces +"d: %.10f\n";
//inside the for loop
System.out.printf(myFormat , x, sum);
已编辑:可以使用%2d使数字使用2个空格,如果该数字更大,则将使用更多空格
更多信息:
- (搜索printf方法)
x
的位数在术语之后添加空格:
int j = String.valueOf(x).length();
String sp = "";
while( j++ < String.valueOf(userNum).length() )
sp += " ";
System.out.printf("Term %s %d : %.15f\n", sp, x, sum);
int j=String.valueOf(x).length();
字符串sp=“”;
而(j++
您似乎希望根据x
的位数在术语之后添加空格:
int j = String.valueOf(x).length();
String sp = "";
while( j++ < String.valueOf(userNum).length() )
sp += " ";
System.out.printf("Term %s %d : %.15f\n", sp, x, sum);
int j=String.valueOf(x).length();
字符串sp=“”;
而(j++
使用System.out.printf(…)
或String.format(…)
。API将向您展示如何使用它们;除非与实际值一起使用,否则它似乎无法正常工作。有没有一种方法可以使用变量(在本例中为“sum”)执行printf?我还没有尝试String.format;我在API中读到过这方面的内容,但我只是最近才开始编程,而且对Java非常陌生——我真的不知道如何将它应用到我的特定代码中。感谢Jeffrey和Hovercraft。“我试过printf;除非与实际值一起使用,否则它似乎不太好用。”
:我不理解你在这里的说法。这是最好的解决办法。如果你已经尝试过,那么你应该向我们展示你是如何尝试的,你的输出是什么。String.format的工作原理与printf相同,只是它返回一个字符串,以后可以打印出来。@LuiggiMendoza这是一个答案。@CaptainGiraffe我仔细考虑了一分钟,并将其转换为答案。谢谢使用System.out.printf(…)
或String.format(…)
。API将向您展示如何使用它们;除非与实际值一起使用,否则它似乎无法正常工作。有没有一种方法可以使用变量(在本例中为“sum”)执行printf?我还没有尝试String.format;我在API中读到过这方面的内容,但我只是最近才开始编程,而且对Java非常陌生——我真的不知道如何将它应用到我的特定代码中。感谢Jeffrey和Hovercraft。“我试过printf;除非与实际值一起使用,否则它似乎不太好用。”
:我不理解你在这里的说法。这是最好的解决办法。如果你已经尝试过,那么你应该向我们展示你是如何尝试的,你的输出是什么。String.format的工作原理与printf相同,只是它返回一个字符串,以后可以打印出来。@LuiggiMendoza这是一个答案。@CaptainGiraffe我仔细考虑了一分钟,并将其转换为答案。谢谢看了你的sp技巧后,我编辑了我的答案。在评论/帖子中使用printf之前,你应该先学会使用它。另外,你知道吗,你可以通过使用(int)Math.log10(Math.abs(longVar))+1来获得数字中的位数(在长数字范围内)
(比将数字转换为字符串还要快)。谢谢JR。我将使用它。OP,如前所述,在%2d
或%3d中正确使用printf
,如果userNum>100
,则使用%3d。好的,基于此编辑答案,我没有注意到这一事实。在使用sp技巧看到您的答案后,我编辑了我的答案。在评论/帖子中使用printf之前,你应该先学会使用它。另外,你知道吗,你可以通过使用(int)Math.log10(Math.abs(longVar))+1来获得数字中的位数(在长数字范围内)
(比将数字转换为字符串还要快)。谢谢JR。我将使用它。OP,如前所述,在%2d
或%3d中正确使用printf
,如果userNum>100
好的话,根据它编辑答案,我没有注意到这个事实。@Luigi,我正在为这个程序调整它。谢谢你指点方向。别担心,这就是答案的目的,解决真正的问题,或者作为解决问题的基础。@user1519533我再次编辑了我的答案,基于后面的空格(只有在你需要的情况下)。我发现我错拼了你的名字。。。谢谢你的更新。我已经玩了一点,它工作得很好。@Luigi,我正在为这个项目调整它。谢谢你指点方向。别担心,这就是答案的目的,解决真正的问题,或者作为解决问题的基础。@user1519533我再次编辑了我的答案,基于后面的空格(只有在你需要的情况下)。我发现我错拼了你的名字。。。谢谢你的更新。我玩了一点,效果很好。