2014-07-09 35 views
2

我有一個像2.75一樣的數字。我想把這個號碼分成兩個其他的花車。這裏是我正在尋找的一個例子:在Java中分裂浮動Android

value = 2.75 
value2 = 2.0 
value3 = 0.75 

我需要他們在我的算法,所以我怎麼能實現這個?我發現split(),但它返回字符串。我至少需要浮點數或整數。

回答

4

你也可以試試這個

double value = 2.75; 
double fraction=value%1;//Give you 0.75 as remainder 
int integer=(int)value;//give you 2 fraction part will be removed 

注: 作爲結果很可能在fraction由於使用的double。你更好的使用

float fraction=(float) (value%1); 

if fractional部分很大。

5

你可以施放

float value = 2.75f; 
int valueTruncated = (int) value; 
float value2 = valueTruncated; 
float value3 = value - value2; 
1

另一種選擇是,用split():

double value = 2.75; 
/* This won't work */// String[] strValues = String.valueOf(value).split("."); 
String[] strValues = String.valueOf(value).split("\\."); 
double val1 = Double.parseDouble(strValues[0]); // 2.0 
double val2 = Double.parseDouble(strValues[1]); // 0.75 
+0

如果小數由「,」分裂,怎麼辦?你好ArrayIndexOutOfBoundsException? – Stan

+0

那麼@Stan,我不確定「,」但問題要求包含「。」的值。我很抱歉,我還沒有在Java的親,但我總是渴望學習... – instanceof

+0

我只是想說,在不同的語言環境逗號的標誌是不同的。我的意思是小數部分和浮點部分之間的「splitter char」。例如在美國的「,」而在德國的「。」。這意味着代碼必須獨立工作區域設置。你的代碼會崩潰與美國區域運行,因爲將不會有點,因此你會得到ArrayIndexOutOfBoundsException。 – Stan

1

如果輸入爲59.38 結果是 N1 = 59 N2 = 38 這是我想出了:

int n1, n2 = 0; 
    Scanner scan = new Scanner(System.in); 
    double input = scan.nextDouble(); 

    n1 = (int) input; 
    n2 = (int) Math.round((input % 1) * 100);