『壹』 java如何實現用戶輸入大整數轉為乘以10的冪次方,例如:5*10^5
Java 科學計數法
1 科學計數法的概念
1.1 有效數字
在一個近似數中,從左邊第一個不是0的數字起,到精確到的位數止,這中間的所有數字都叫做這個近似數的有效數字
例如:
890314000保留三位有效數字為8.90×10的8次方 (四舍)
839960000保留三位有效數字為8.40×10的8次方 (五入)
0.00934593保留三位有效數字為9.35×10的-3次方
1.2 E記號
大多數計算器及計算機程序用科學記數法顯示非常大和非常小的結果。因為指數上標(例如1011)在屏幕上顯示不方便,字母E或e通常是用來代表的十次冪(寫作「×10b」),E或e之後的數字是它的指數;換句話說,任何兩實數a和b(b應為整數),「aEb」所表示的值是a × 10b。注意,這種用法中字母e不是數學常數e,也不是指數函數exp()(採用用大寫字母E顯示可以更大程度地避免誤解);盡管它也表示指數,但這個符號通常被稱為(科學計數法)E或e符號,而不是指數中的底數符號(盡管後者也會出現)。在正式的出版物中盡量不要使用這種顯示方法。
注意科學記數法中的e或E與數學常數e或函數exp沒有關系。
這種寫法是因為一些計算機程序中不方便寫上標而產生的,在正式出版物中不應當使用這種寫法。
我國國家標准中科學計數法均用a ×10b的形式表示,而不是aEb(參見GB3101-1993,GBT15835-2011,GBT8170-2008)。
2 Java中的科學計數法
在Java中,當Double的取值符合某條件時,將會以科學計數法的方式顯示(下面是個人測試的結果,非從文檔中得到的結論):
@Testpublic void testPrintScientificNotation() { //整數部分位數大於等於8時開始以科學計數法顯示
System.out.println(-12345678.0);
System.out.println(12345678.0); //整數位為0,當小數位以0開始連續出現大於等於3時開始以科學計數法顯示
System.out.println(0.0001);
System.out.println(-0.0001);
}
結果
-1.2345678E71.2345678E71.0E-4-1.0E-4
很多時候,我們需要做一個統一,要麼全部以科學計數法輸出,要麼就全部顯示為普通計數。
根據網上的資料,主要提及NumberFormat、DecimalFormat、BigDecimal這三種API實現方式。
2.1 NumberFormat
NumberFormat 是所有數值格式的抽象基類。
public static String scientificNotation2String(Double d, int newValue) {
String value = null;
NumberFormat nf = NumberFormat.getInstance(); // 設置此格式中不使用分組
nf.setGroupingUsed(false); // 設置數的小數部分所允許的最大位數。
nf.setMaximumFractionDigits(newValue); value = nf.format(d); return value;
}
如果輸入的小數位數,大於設定的最大的小數位數,則會進行四捨五入。
2.2 DecimalFormat
DecimalFormat 是 NumberFormat 的一個具體子類,用於格式化十進制數字。該類設計有各種功能,使其能夠解析和格式化任意語言環境中的數,包括對西方語言、阿拉伯語和印度語數字的支持。它還支持不同類型的數,包括整數 (123)、定點數 (123.4)、科學記數法表示的數 (1.23E4)、百分數 (12%) 和金額 ($123)。所有這些內容都可以本地化。
public static String scientificNotation2String(Double d) {
String value = null;
DecimalFormat decimalFormat = new DecimalFormat("0.00");//格式化設置
value = decimalFormat.format(d); return value;
}
需要設置模版,指定小數保留的位數,傳入數值小數位數超出指定位數,則會進行四捨五入;傳入數值小數位不足指定位數,則可以設置補零。
需要將數值轉換為科學計數法只須將模版修改即可,例如將模版修改為:0.##E0
2.3 BigDecimal
BigDecimal是不可變的、任意精度的有符號十進制數。
public static String scientificNotation2String(String str) {
String value = null;
BigDecimal bd = new BigDecimal(str); value = bd.toPlainString(); return value;
}
BigDecimal的構造方法很多,不一定是要傳入String類型的值。
BigDecimal中的toString方法和toPlanString方法的區別:
toString():返回此BigDecimal的字元串表示形式,如果需要指數,則使用科學計數法
toPlainString():返回不帶指數欄位的此BigDecimal的字元傳表示形式
『貳』 最近剛學JAVA,突然想把一個指數函數表達出來,比如7的8次方,具體怎麼編程謝謝
Math.pow(double m, double n)
是求m的n次方
『叄』 求ex的近似值。ex ≈1 + x + x /2! + x /3! +… (x由用戶輸入,誤差小於10-8 )。用JAVA編程
這個好難,要用迭代,我最頭疼的就是迭代了,你是要代碼還是思路,要代碼沒有,思路就是迭代,然後用標準的指數函數求值-當前近似值,小於10-8,即可結束迭代。額。。想想都痛苦,
『肆』 求個JAVA代碼 選一個就可以了,謝謝
『伍』 JSP使用指數函數
用Math.pow();函數,看api 的Math啊
『陸』 JAVA 計算存款利息(再次提問) 又不懂的地方...
pow(x,y)是指數函數,其中參數x是底數,參數y是指數
interest= money(1+rate)^year - money 中的(1+rate)^year
底數是1+rate,指數是year
所以變為money *Math.pow((1+rate),year)-money 了
第二問也問得太傻了吧,公式不是給出那個1了嘛。
第三問
(int)(interest*100+0.5)/100,是四捨五入到十分位的意思,舉個例子
如interest=100.005
則(int)(100.005*100+0.5)/100=(int)(10000.5+0.5)/100=(int)(10001.0)/100=100.01
是不是100.005四捨五入到十分位了。
再如interest=100.004
則則(int)(100.004*100+0.5)/100=(int)(10000.4+0.5)/100=(int)(10000.9)/100=100.00
『柒』 java中有沒有底為5指數函數
在java.lang.math類中的log(double a)代表以e為底的a的對數,因此logmN在Java中的表示為:
logmN= log((double)N)/log((double)m)
Math.log ((double) 10) / Math.log ((double) 5)
『捌』 JAVA的指數函數怎麼用
如果和主函數在同一個類中,並且是靜態方法可以直接調用,如果在別的類里要先創建那個類的實例對象,然後再調用
public class A {
public static void main(String[] args){
A a = new A();
a.show();
show2();
}
void show1(){}
static void show2(){}
}
『玖』 JAVA中如何實現5的3次冪的演算法
int a = 5;
for(i=1;i<3;i++){
a*=a;
}