java中1+1d/5和1+1/5的區(qū)別說(shuō)明
java 1+1d/5和1+1/5的區(qū)別
主要區(qū)別就是數(shù)據(jù)類型不同
1+1d/5的結(jié)果是1.2, 是double類型. 因?yàn)?d就是double類型,1d/5結(jié)果自動(dòng)提升成double類型,1+1d/5結(jié)果也自動(dòng)提升成double類型. .
1+1/5的結(jié)果1, 是int類型, 因?yàn)?/5是整除(會(huì)丟失小數(shù)部分的精度…) . 兩邊操作數(shù)都是int類型. 最后在加上1還是int類型.所以結(jié)果就是int類型.
java參考代碼如下
public class Test { public static void main(String[] args) { double num1 = 1 + 1d / 5; System.out.println(num1);//輸出1.2 int num2 = 1 + 1 / 5; System.out.println(num2);//輸出1 } }
計(jì)算1+1/2!+1/3!+...+1/20!之和
原題:計(jì)算1+1/2!+1/3!+…+1/20!之和
觀察題目,本題難點(diǎn)就是要計(jì)算階乘,不妨用一個(gè)循環(huán)來(lái)計(jì)算階乘,再用一個(gè)循環(huán)來(lái)計(jì)算從1/1!到1/20!的和。代碼如下
package java1; public class sum { public static void main(String args[]) { //用s來(lái)表示階乘結(jié)果 int s=1; double sum=0; //計(jì)算1/1!到1/20!的和 for(int i=1;i<=20;i++) { //分別計(jì)算j從1到20的階乘 for(int j=1;j<=i;j++) { s=s*j; } sum+=1.0/s; } System.out.println(sum); } }
這個(gè)輸出結(jié)果為無(wú)窮,我當(dāng)時(shí)想半天也沒(méi)結(jié)果,后來(lái)同學(xué)指出我每次算每個(gè)數(shù)的階乘時(shí)并沒(méi)有將重置為1;所以正確代碼如下
package java1; public class sum { public static void main(String args[]) { //用s來(lái)表示階乘結(jié)果 double sum=0; //計(jì)算1/1!到1/20!的和 for(int i=1;i<=20;i++) { //每次算完階乘后,計(jì)算下一次階乘時(shí)都要將s重置為1 int s=1; //分別計(jì)算j從1到20的階乘 for(int j=1;j<=i;j++) { s=s*j; } sum+=1.0/s; } System.out.println(sum); } }
正確結(jié)果如下
可以觀察到上面代碼的時(shí)間復(fù)雜度為o(n^2),我們其實(shí)可以思考一下如何運(yùn)用優(yōu)化階乘,我這里聽(tīng)老師說(shuō)階乘可以運(yùn)用遞歸思想。代碼如下
package java1; public class sum { //運(yùn)用遞歸用來(lái)計(jì)算從1到20分別的階乘結(jié)果 public static int JieChen(int i) { if(i==1) { return 1; } else { return (JieChen(i-1)*i); } } public static void main(String args[]) { double sum=0; //計(jì)算1/1!到1/20!的和 for(int i=1;i<=20;i++) { int s; //用來(lái)計(jì)算i的階乘 s=JieChen(i); sum+=1.0/s; } System.out.println(sum); } }
運(yùn)用上面思路不僅可以計(jì)算有限的階乘分之一的和,而且我們還可以拓展到計(jì)算無(wú)限個(gè)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python爬蟲(chóng) 12306搶票開(kāi)源代碼過(guò)程詳解
這篇文章主要介紹了Python爬蟲(chóng) 12306搶票開(kāi)源代碼過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Java sleep方法及中斷方式、yield方法代碼實(shí)例
這篇文章主要介紹了Java sleep方法及中斷方式、yield方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04詳解Spring Cloud 跨服務(wù)數(shù)據(jù)聚合框架
這篇文章主要介紹了詳解Spring Cloud 跨服務(wù)數(shù)據(jù)聚合框架,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03Thread類interrupt interrupted及isInterrupted區(qū)別
這篇文章主要為大家介紹了Thread類interrupt interrupted及isInterrupted區(qū)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10SpringBoot項(xiàng)目啟動(dòng)數(shù)據(jù)加載內(nèi)存的三種方法
一般來(lái)說(shuō),SpringBoot工程環(huán)境配置放在properties文件中,啟動(dòng)的時(shí)候?qū)⒐こ讨械膒roperties/yaml文件的配置項(xiàng)加載到內(nèi)存中,本文給大家介紹了SpringBoot項(xiàng)目啟動(dòng)數(shù)據(jù)加載內(nèi)存中的三種方法,需要的朋友可以參考下2024-04-04Java數(shù)據(jù)結(jié)構(gòu)之棧與綜合計(jì)算器的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)結(jié)構(gòu)中棧與綜合計(jì)算器的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下2022-10-10mybatisplus邏輯刪除基本實(shí)現(xiàn)和坑點(diǎn)解決
這篇文章主要介紹了mybatisplus邏輯刪除基本實(shí)現(xiàn)和坑點(diǎn)解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03Java中的Optional使用詳細(xì)說(shuō)明
這篇文章主要介紹了Java中的Optional使用詳細(xì)說(shuō)明,Optional就是相當(dāng)于把對(duì)象包了一層,將判斷空的部分代碼給單獨(dú)抽出來(lái)了,主要就是為了避免null引起的部分問(wèn)題,需要的朋友可以參考下2023-11-11