問題排查經(jīng)過
- 新建的服務(wù)器檬姥,將原來的war包部署之后涧卵,做一個業(yè)務(wù)提交的時候,總是報錯圾浅。
- 原來的war包在原來的服務(wù)器是業(yè)務(wù)能提交成功掠手。
- 異常報錯為字符串轉(zhuǎn)數(shù)字出錯
- 查看代碼,首先是數(shù)字轉(zhuǎn)字符當(dāng)參數(shù)傳入工作流狸捕,工作流中再講字符串轉(zhuǎn)數(shù)字喷鸽,數(shù)字轉(zhuǎn)字符串的代碼如下:
DecimalFormat formatter = new DecimalFormat("###############0.00");
- 將轉(zhuǎn)出的字符串輸出,發(fā)現(xiàn)轉(zhuǎn)換過程為1.23 -> 1,23
- 想到該客戶為德國公司剖淀,查一下德國的數(shù)字格式化,千分位是小數(shù)點(diǎn)捌刮,小數(shù)點(diǎn)是逗號(坑爹笆姘丁)
- 將DecimalFormat默認(rèn)加入中國的格式參數(shù)俄认,問題解決
DecimalFormat df = new DecimalFormat("##################0.00", new DecimalFormatSymbols(Locale.CHINA));
總結(jié)
- 在編寫與格式轉(zhuǎn)換相關(guān)的代碼時眯杏,最好指定Locale岂贩,避免環(huán)境導(dǎo)致結(jié)果不一致卸伞。