0
我有一項任務,讓人們輸入形狀和邊長/半徑,並給出一個面積和周長/周長。然而,我所遇到的問題已經超出了我的深度。雙倍長度卡在17
area = (Math.PI) * (radius) * (radius);
circumference = 2 * Math.PI * radius;
System.out.printf("The circumference is: %f\n", circumference);
System.out.printf("The area is: %f\n", area);
String areaString = String.valueOf(area);
String perimeterString = String.valueOf(circumference);
System.out.println("Total number of digits in the circumference is: " + areaString.length());
System.out.println("Total number of digits in the area is: " + perimeterString.length());
這是代碼。之前輸入了半徑。如果它有任何區別,那麼該區域是一個雙精度值,用戶輸入的值是一個整數。因此,代碼的輸出是:
The circumference is: 69.115038
The area is: 380.132711
Total number of digits in the circumference is: 17
Total number of digits in the area is: 17
因此,我認爲正在發生的事情是double的長度其實比被打印出來(PI明顯不合理)。但是,當我改變第一個print語句:
System.out.println("Total number of digits in the circumference is: " + (areaString.length()-1));
日食仍然打印出17.如果還有人有更多的經歷我將不勝感激一些建議。
你覺得我應該怎麼做?我需要能夠獲得任務的位數,這種方法就是一些同學告訴我他們這樣做了。 –
爲了闡明爲什麼'%f'表現不同,[javadoc](https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#dndec)說:*如果精度沒有指定,那麼默認值是6. *這就是爲什麼這兩個值在小數點後面打印6位數字,無論該值的實際精度如何。 – Andreas
@ConradMelcher這將是一個非常奇怪的任務,要求「double」值中的數字位數。什麼是確切的措辭? –