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)文章
MyBatis?詳細(xì)講解動(dòng)態(tài)?SQL的使用
動(dòng)態(tài)?SQL?是?MyBatis?的強(qiáng)大特性之一。如果你使用過(guò)?JDBC?或其它類似的框架,你應(yīng)該能理解根據(jù)不同條件拼接?SQL?語(yǔ)句有多痛苦,例如拼接時(shí)要確保不能忘記添加必要的空格,還要注意去掉列表最后一個(gè)列名的逗號(hào)。利用動(dòng)態(tài)?SQL,可以徹底擺脫這種痛苦2022-04-04
Mybatis之a(chǎn)ssociation和collection用法
這篇文章主要介紹了Mybatis之a(chǎn)ssociation和collection用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Spring Boot Mysql 數(shù)據(jù)庫(kù)操作示例
本篇文章主要介紹了Spring Boot Mysql 數(shù)據(jù)庫(kù)操作示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
Java編程二項(xiàng)分布的遞歸和非遞歸實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了Java編程二項(xiàng)分布的遞歸和非遞歸實(shí)現(xiàn)代碼實(shí)例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
關(guān)于SpringBoot中Ajax跨域以及Cookie無(wú)法獲取丟失問(wèn)題
這篇文章主要介紹了關(guān)于SpringBoot中Ajax跨域以及Cookie無(wú)法獲取丟失問(wèn)題,本文具有參考意義,遇到相同或者類似問(wèn)題的小伙伴希望可以從中找到靈感2023-03-03
Kotlin中?StateFlow?或?SharedFlow?的區(qū)別解析
Kotlin協(xié)程中的StateFlow和SharedFlow是響應(yīng)式數(shù)據(jù)流,分別用于UI狀態(tài)管理和事件通知,StateFlow有初始值,只保留最新值,適用于UI狀態(tài)管理;SharedFlow沒(méi)有初始值,可以配置緩存大小,適用于事件通知,感興趣的朋友一起看看吧2025-03-03
Java 超詳細(xì)圖解集合框架的數(shù)據(jù)結(jié)構(gòu)
什么是集合框架呢?集合框架是為表示和操作集合而規(guī)定的一種統(tǒng)一的標(biāo)準(zhǔn)的體系結(jié)構(gòu)。最簡(jiǎn)單的集合如數(shù)組、列表和隊(duì)列等,任何集合框架一般包含:對(duì)外的接口、接口的實(shí)現(xiàn)和對(duì)集合運(yùn)算的算法2022-04-04
Java中關(guān)于http請(qǐng)求獲取FlexManager某設(shè)備分組監(jiān)控點(diǎn)
這篇文章主要介紹了Java中關(guān)于http請(qǐng)求獲取FlexManager某設(shè)備分組監(jiān)控點(diǎn),本文僅僅介紹了使用http請(qǐng)求獲取FlexManager平臺(tái)某個(gè)FBox盒子即某設(shè)備的監(jiān)控點(diǎn)分組的分組下的所有監(jiān)控點(diǎn)信息,需要的朋友可以參考下2022-10-10

