2010-03-22 42 views
1

我想通過內置的函數java(非javascript)在十進制後截斷數字。 例如: 69.80000000001至69.8小數點後的截斷數...通過java中的內置函數

請指導。

+0

截斷還是舍入? – 2010-03-22 07:08:13

+1

截斷/倒圓有不幸的屬性,他們不能產生數字69.8作爲輸出。他們可能會給你69.7999999999999971578290569595992565155029296875,這是接近。 – 2010-03-22 07:32:52

+0

truncate noy round off。因爲我想把69.8001變成69.8而沒有變成70. – sadia 2010-03-22 07:59:37

回答

2

Decimal Format class呢?

我沒有測試過這一點,但:好吧,這應該工作:

import java.text.DecimalFormat; 
import java.math.RoundingMode; 
public class Test 
{ 
    public static void main(String args[]) 
    { 
     double i = 69.8999999999; 
     DecimalFormat format = new DecimalFormat("#.#"); 
     format.setRoundingMode(RoundingMode.FLOOR); 
     String s = format.format(i); 
     i = Double.parseDouble(s); 
     System.out.println(i); //should be 69.8 
    } 
} 
+0

它沒有運行在JCreator(java編程環境)中。我應該包含任何頭文件嗎?或者是其他東西。 – sadia 2010-03-22 07:37:59

+0

悲傷的面孔! :( 沒有workoing。 – sadia 2010-03-22 07:43:49

+0

有一些需要進口的聲明。我編輯了我的原始答案,我希望幫助。 – 2010-03-22 08:35:55

1

可以使用BigDecimal的標度功能:

new BigDecimal(69.80000000001).setScale(1, RoundingMode.HALF_UP).doubleValue(); 

這是進一步使用四捨五入的值。如果您只想打印四捨五入的值,但保留原始值,則DecimalFormat是Matt所描述的正確選擇。

+0

它給錯誤,我應用它我的程序在執行此操作之前是否需要任何頭文件? – sadia 2010-03-22 07:47:00

+0

什麼錯誤?編譯器?是否已導入java.math.BigDecimal和java.math.RoundingMode?任何IDE都應該通過「Organize Imports」或 – 2010-03-22 08:40:31

+0

不,我還沒有導入任何這樣的東西。反正生病試試吧! – sadia 2010-03-22 21:26:11