круглое десятичное число к 10-му ближайшему

Internet Explorer является единственным браузером, который действительно страдает от этого в современном мире. (Версии 5, 6, и 7 были медленной собакой. 8 не показывает ту же неисправность.), Кроме того, IE становится медленнее и медленнее, дольше Ваша строка.

, Если у Вас есть длинные строки для конкатенации тогда определенно, используют array.join технику. (Или некоторая обертка StringBuffer вокруг этого, для удобочитаемости.), Но если Ваши строки коротки, не беспокоятся.

5
задан Tuffy G 11 December 2009 в 12:40
поделиться

4 ответа

Немного измените шаблон, чтобы жестко запрограммировать последний ноль:

double finalPrice = 2.46;
DecimalFormat fmt = new DecimalFormat("0.0'0'");
System.out.println("£" + fmt.format(finalPrice) + " Approx");

Теперь, если вы манипулируете реальными деньгами, вам лучше не использовать double, а int или BigInteger .

9
ответ дан 18 December 2019 в 06:11
поделиться

Вместо этого используйте BigDecimal .

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

РЕДАКТИРОВАТЬ: round () не позволяет указывать десятичные разряды, только значащие цифры. Вот несколько неудобный метод, но он работает (в основном, если вы хотите усечь):

import java.math.*;

public class Test
{
    public static void main(String[] args)
    {
        BigDecimal bd = new BigDecimal("20.44");
        bd = bd.movePointRight(1);
        BigInteger floor = bd.toBigInteger();
        bd = new BigDecimal(floor).movePointLeft(1);
        System.out.println(bd);
    }
}

Я хотел бы надеяться, что есть более простой способ сделать это ...

10
ответ дан 18 December 2019 в 06:11
поделиться

ИЗМЕНИТЬ

Попробуйте следующее:

double d = 25.642;
String s = String.format("£ %.2f", Double.parseDouble(String.format("%.1f", d).replace(',', '.')));
System.out.println(s);

Я знаю, что это глупый способ, но он работает.

0
ответ дан 18 December 2019 в 06:11
поделиться

Это выводит 2.40

BigDecimal bd = new BigDecimal(2.44);
System.out.println(bd.setScale(1,RoundingMode.HALF_UP).setScale(2));
6
ответ дан 18 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: