Как получить значение, которое после точки.Как получить значение, которое после точки
Пример: Если значение 5.4 является значением, и я хочу получить значение 4 не 0.4, как я могу это сделать?
Как получить значение, которое после точки.Как получить значение, которое после точки
Пример: Если значение 5.4 является значением, и я хочу получить значение 4 не 0.4, как я могу это сделать?
Вы можете использовать функции String, для этого:
public static void main(String args[]){
Double d = 5.14;
String afterD = String.valueOf(d);
afterD =afterD.substring(afterD.indexOf(".") + 1);
System.out.println(afterD);
}
indexof(".") + 1
затем распечатать его.& см. Его работа.
ИЛИ Вы можете попробовать:
double d = 4.24;
BigDecimal bd = new BigDecimal((d - Math.floor(d)) * 100);
bd = bd.setScale(4,RoundingMode.HALF_DOWN);
System.out.println(bd.intValue());
напечатает: 24
предположим, что ваш вход 4.241
, то вы должны добавить 1 дополнительный 0
в BigDecimal
о.-д. формуле т.е. вместо 100
это буду 1000
.
Ват послеDindexof m получения ошибки? –
Извините, см. Обновление. –
одна линия ответ
int floatingpoint(float floating){
return Integer.valueOf((Float.toString(floating).split(".")[1]));
}
, который будет делать следующее:
Спасибо.
В значениях java float инициализируются post fix f, для ex '5.14f', в противном случае это считается двойным значением. – Aniruddha
Попробуйте этот путь
Double d = 5.14;
String afterD = String.valueOf(d);
String fractionPart = afterD.split("\\.")[1];
int i=(int)yourvalue;
float/double afterDecimal= yourvalue - i;
int finalValue = afterDecimal * precision;//define precision as power of 10
EX. yourvalue = 2.345;
int i=(int)yourvalue;//i=2
float/double afterDecimal= yourvalue - i;//afterDecimal=0.345
int finalValue = afterDecimal * precision;
//finalValue=0.345*10 or
//finalValue=0.345*100 or
// finalValue=0.345*1000
...
Пожалуйста, не используйте строковые операции, они очень медленные – BlackBeard
Как получить точность? – Panther
Код:
double i = 5.4;
String[] s = Double.toString(i).split("\\.");
System.out.println(s[1]);
выход:
4
Explantion:
вы можете преобразовать двойной тип строки и после этого использовать расщепленной функции, которая расщепляется преобразованный дважды в строку на две части из-за использования \\.
разделителем. В конце напечатайте вторую часть, которую вы хотите.
вы можете попробовать это
код:
double i = 4.4;
String s = Double.toString(i);
boolean seenFloatingPoint = false;
for (int j = 0; j < s.length(); j++) {
if(s.charAt(j)== '.' && !seenFloatingPoint){
seenFloatingPoint = true;
} else if (seenFloatingPoint)
System.out.print(s.charAt(j));
}
System.out.println("");
выход:
4
он отлично работает спасибо –
@ Wiz25 приветствую, что я опубликовал другое решение, поэтому, если вы хотите взглянуть на него plz :) –
Попробуйте этот путь
double d = 5.24;
int i = Integer.parseInt(Double.toString(d).split("\\.")[1]);
System.out.println((int)(5.4%((int)5.4)*10));
По существу 5.4 mod 5
получает вас .4 * 10
получает вас 4
.
Пожалуйста, не используйте строковые операции, они очень медленные – BlackBeard
wow я глубоко удивлен, что ** нет ** ответ использует оператор% (modulo)?!?!?!? –