在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ 三元表達(dá)式的計(jì)算問題

三元表達(dá)式的計(jì)算問題

大家好,下面這一段代碼是根據(jù)personTypeCode(已知的)來計(jì)算結(jié)果的,guaranteeSalary 是一個(gè)常量 已知的int值,coefficient是一個(gè)已知的double值,
為什么計(jì)算出來的是 0 ?
clipboard.png

補(bǔ)充一下,為什么 (4/9) 等于 0

clipboard.png

回答
編輯回答
醉淸風(fēng)

4/9 結(jié)果轉(zhuǎn)為int類型,取舍方式是小數(shù)點(diǎn)后全部舍棄,所以結(jié)果取0

2018年7月13日 10:27
編輯回答
刮刮樂

4/9 結(jié)果轉(zhuǎn)為int類型,因?yàn)榻Y(jié)果小于1大于0 , 所以結(jié)果取0

2017年2月18日 09:14
編輯回答
蝶戀花

4/9=0.4444444444444,四舍五入就是0,進(jìn)一法那就是1

2017年7月1日 19:01
編輯回答
萌小萌

Java中int類型/int類型返回值還是int類型,也就是說4/9的結(jié)果等價(jià)于0余4,所以4/9=0,
解決方法可以更改4或9的任何一個(gè)為浮點(diǎn)類型,例如4.0/9這樣結(jié)果就會變成浮點(diǎn)類型了。

希望對你有幫助^_^

2018年7月24日 19:35
編輯回答
膽怯

三元運(yùn)算符具有右結(jié)合性 也就是說A op B op C 等價(jià)于 A op (B op C)
所以你的表達(dá)式a? 1 : b ? (4/9) :1 等價(jià)于a? 1 : (b ? (4/9) :1 )
a不成立則直接判斷b ? (4/9) :1
那么現(xiàn)在b成立了結(jié)果是(4/9).
問題來到了為什么4/9等于0.
因?yàn)?/9是個(gè)整除 整除的話4/9就是0.
你想得到正確結(jié)果 你試試4/9.0,進(jìn)行浮點(diǎn)數(shù)運(yùn)算。

2017年6月18日 19:30
編輯回答
吢丕

分子分母都是整型的,結(jié)果還應(yīng)當(dāng)是整型,所以舍棄了小數(shù)點(diǎn)兒。讓分子或者分母成為float,結(jié)果就會靠近float而不是int了

2017年8月9日 16:07
編輯回答
夢若殤

我能想到的是,你保存這個(gè)結(jié)果的變量是 double 類型嗎?

另外 4 / 9 = 0 可以看樓下的說明,剛才我說錯(cuò)了。


對于這種不同 PersonType 不同取值的情況,個(gè)人的習(xí)慣是定義一個(gè)靜態(tài) Map 來存各種條件下的取值

private static final Map<String, Integer> valueMap;

static {
    valueMap = new HashMap();
    valueMap.put("A", 1);
    valueMap.put("W", 4 / 9);
}

public void func() {
    guaranteeSalary * 
        // getOrDefault 是 Java 8 添加的,如果 JDK 版本不滿足,可以自行添加該方法
        (valueMap.getOrDefault(user.getPersonTypeCode(), 1) +
         ce.getCoefficient().doubleValue());
}
2018年3月12日 16:18
編輯回答
下墜

確定沒有少括號???最后那個(gè)括號對應(yīng)的什么

當(dāng)"w".equals(user.getPersonTypeCode())true時(shí),取4 / 9等于0

guaranteeSalary * 0 + guaranteeSalary * ce.getCoefficient().doubleValue()

當(dāng)ce.getCoefficient().doubleValue()為0
則計(jì)算結(jié)果就是0

2017年8月28日 15:53
編輯回答
挽青絲

轉(zhuǎn)換成float再計(jì)算除法,比如4.0 / 9

2018年5月14日 04:26
編輯回答
伴謊

這個(gè)問題比較經(jīng)典,特別在計(jì)算跟金錢有關(guān)的數(shù)據(jù)的時(shí)候,容易出現(xiàn)這樣的問題,錢數(shù)的加減乘除,如果不精確計(jì)算,碰到數(shù)據(jù)量大的計(jì)算時(shí)候 可能計(jì)算出來的結(jié)果差異很大。

2017年6月26日 19:33