我的項目中有一項功能可以對3個不同的小數進行乘法運算。通過在java中舍入來減少數字長度
有時候,結果可能給一些真正的大號碼,如:
213215648783612154.334
or
421342342342342344.123
的事情是:這使該值的記錄列就像NUMBER(8,3)定義。有沒有辦法通過做一些舍入操作來減少這個數字的長度?我真的不想重新定義列,因爲它正在系統的其他部分使用。
我的項目中有一項功能可以對3個不同的小數進行乘法運算。通過在java中舍入來減少數字長度
有時候,結果可能給一些真正的大號碼,如:
213215648783612154.334
or
421342342342342344.123
的事情是:這使該值的記錄列就像NUMBER(8,3)定義。有沒有辦法通過做一些舍入操作來減少這個數字的長度?我真的不想重新定義列,因爲它正在系統的其他部分使用。
您的系統中存在基本設計或邏輯缺陷。
如果你有一個數據庫,預期值爲NUMBER(8,3)
,那麼它說:「我有8位數的空間,其中3個是小數」。可以存儲在該列中的最大值是99999.999
。
您不能存儲任何更大的值。期。
那麼,這是什麼問題?或者:
213215648783612154.334
的值只是普通的壞....或你修復哪一個取決於你的具體情況。
答案是:不可能以某種有意義的方式四捨五入。因爲最大值爲99999.999
您可以嘗試編碼而不是四捨五入。但所有其他與此列一起工作的代碼必須瞭解編碼。 例如,您可以使用前5位數作爲尾數,最後3位作爲指數(並在某處隱藏標誌)。但是如果你嘗試一下,我想看看你的同事們的臉。
嗯確定你可以切斷一些數字,即使它可能會給你一些錯誤的數據呵呵。
String number= Mynumber.tostring(); //assuming mynumber is the object that stores the number
number= number.substring((number.length()-(number.length()-9)) , number.length()); //adding 1 to 8 because of the '.'
System.out.pritnln(number);
輸入=
213215648783612154.334
輸出:
12154.334
關於什麼的只取較小的最大您的隨機函數? – 2014-10-03 14:33:48
當您創建答案BigDecimal時,您可以給它一個舍入比例。 – StackFlowed 2014-10-03 14:34:35
我知道我可以給一個舍入的比例,但我可以給它,所以我的號碼的長度減少?從(14,3)到(8,3)? – 2014-10-03 14:35:38