2015-05-20 2 views
-3

Если у меня есть двойное хранилище 10.0, что является лучшим способом конвертировать его в строку 10?
В настоящее время я:Преобразование определенного двойника в строку

if (object.getValue() > 9.999) { 
    someObject.setText(String.format("%d", new Double(object.getValue()).intValue())); 
} 
else { 
    //use amount as is 
} 

Update
Эти оценки класса класса. I только заботиться о хорошем стиле кодирования для проверки, если double равен 10.0 и только затем преобразовать его в строку «10». Не заботьтесь о любом другом номере

+0

@AvinashRaj: Что значит? В ролях? – Jim

+0

Вы указали, как вы хотите представить 10.0 - примерно 10,5? 10,25? 10,125? –

+0

@JonSkeet: я не выше 10.0 – Jim

ответ

0

Если вы знаете строку, вы можете просто подстроки его до точки:

String s = "10.0"; 
System.out.println(s.substring(0, s.indexOf('.'))); 

Если вы хотите, чтобы манипулировать им, как двойные (я действительно не вижу почему, хотя), вы можете попробовать что-то вроде:

System.out.println(String.format("%d", (int)Math.floor(new Double("10.0")))); 

Существует, конечно, много способов. Я думаю, что в целом ваш лучший выбор - подстрока, но я не уверен, каковы ваши потребности.

Надеется, что это помогает :)


UPDATE после вопроса уточнения:

Если все, что вам интересно это проверить значение двойного (при условии, конечно, object.getValue() двойной) , просто проверьте:

if (object.getValue() >= 10) 

Он будет охватывать все, что вам нужно, и затем вы можете распечатать простую строку «10», если необходимо.

+0

Но мой чек '> 9.999' sensible? – Jim

+0

Это зависит от вашего вопроса. Казалось бы,' amount' является строкой, но вы проверяете ее как если он был численным (float или double). –

+0

Здравствуйте, я обновил OP – Jim

0

Если это все, что вы хотите сделать, вы можете сделать так:

double number = 10.0; 
String output = ("" + (int)number); 
System.out.println(output); 
+0

Здравствуйте, я обновил OP – Jim

0

Самым простым способом будет, делая это.

double d = 10.0 
String str = String.valueOf(d); 
System.out.println(str.substring(0,str.indexOf("."))); 

Поскольку мы имеем дело с двойным, округление может быть выполнено. См этого SO

0

попробовать это:

double d = 10; 

    System.out.println(new BigDecimal(d).setScale(0, RoundingMode.HALF_UP).toPlainString()); 

будет печатать только 10 без замыкающих нулей, или вы можете изменить масштаб, если вы хотите.

Преимущество перед литьем в Int является то, что есть округление, и 9,9 округляется до 10, в то время как приведение к междунар даст 9.

0

Попробуйте это. Я думаю, это должно сработать.

String s=String.valueOf(10.0); 
s=s.replace(".0",""); 
System.out.println(s); 
0

можно сравнить с двойной 10.00, как в:

final double TEN_DOUBLE = 10.00; 
    double ten = 10.00; 
    double nineAndSomething = 9.10; 

    System.out.println("Formatted:" + ((ten == TEN_DOUBLE) ? "10" : ten)); 
    System.out.println("Formatted:" + ((nineAndSomething == TEN_DOUBLE) ? "10" : nineAndSomething)); 

Это дает следующий результат:

отформатирован: 10
Форматируемый: 9.1

+0

Думаю, что '10.1' все равно будет' 10.1 'but' 10.0 'OP хочет как' 10' –

+1

@PeterLawrey О, я вижу, требование изменилось. Я обновлю свой ответ. – panagdu

+0

Я обновил свой ответ. – panagdu

Смежные вопросы