Cannot format given object as a number ошибка конвертер егиссо

Перейти к контенту

Невозможно форматировать данный объект как число

Вопрос:

этот кусок кода меня бросает: невозможно форматировать данный объект как число

  private BigDecimal notional;

public String getNotional() {
System.out.println("notional:" + notional);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.');
System.out.println("notional:" + notional);
String format = df.format(notional);
System.out.println("notional2:" + format);


if(notional!=null)
notional = new BigDecimal(df.format(notional));
return notional.toString();
}

Зачем?

   javax.el.ELException: /pages/emir/acknowledgedTransactions.xhtml @484,160 value="#{ackTxContractBean.firstleg.notional}":
java.lang.IllegalArgumentException: Cannot format given Object as a Number

условный: 2279713.86 условный2: 2.279.713,86

Лучший ответ:

Вероятно, потому что вы, возможно, передаете формат вместо строки.

Конструктор BigDecimal, на который вы нацеливаетесь, принимает строку (BigDecimal (String)). Ни один из методов DecimalFormat.format, похоже, не принимает строку. Просто создайте свой BigDeciamal, а затем отформатируйте, если потом. Какой тип в любом случае является условным.

Нашел эту тему, которая, кажется, делает то, что вы хотите.

The format() method of DecimalFormat is overloaded.

In the working case, you are invoking :

 public final String format(double number)

And in the failing case, you are invoking :

 public final String format (Object obj) 

The first method takes a very specific argument. It expects a double.

This is not the case of the second one, which the type accepted is very broad : Object and where so the check on the type passed is performed at runtime.

By providing a argument that is not a double but a String, the method invoked is the second one.

Under the hood, this method relies on the format(Object number, StringBuffer toAppendTo, FieldPosition pos) method that expects to a number argument that is an instance of the Number class (Short, Long, … Double):

@Override
public final StringBuffer format(Object number,
                                 StringBuffer toAppendTo,
                                 FieldPosition pos) {
    if (number instanceof Long || 
        number instanceof Integer ||                   
        number instanceof Short || 
        number instanceof Byte ||                   
        number instanceof AtomicInteger ||
        number instanceof AtomicLong ||
        (number instanceof BigInteger && ((BigInteger)number).bitLength () < 64)) {

        return format(((Number)number).longValue(), toAppendTo, pos);
    } else if (number instanceof BigDecimal) {
        return format((BigDecimal)number, toAppendTo, pos);
    } else if (number instanceof BigInteger) {
        return format((BigInteger)number, toAppendTo, pos);
    } else if (number instanceof Number) {
        return format(((Number)number).doubleValue(), toAppendTo, pos);
    } else {
        throw new IllegalArgumentException("Cannot format given Object as a Number");
    }
}

But it is not the case as you passed to it a String instance.

To solve the problem, either pass a double primitive as in the success case or convert your String into an instance of Number such as Double with Double.valueOf(yourString).
I advise the first way (passing a double) as it is more natural in your code that already uses double primitives.
The second one requires a additional conversion operation from String to Double.

Автор Сообщение

Заголовок сообщения: Cannot format given object as Date

СообщениеДобавлено: 04 май 2008, 15:11 

Не в сети

Зарегистрирован: 24 окт 2007, 16:24
Сообщения: 7
Карма: 0

Здравствуйте.

Проблема следующего характера:

При формировании отчета по IP телефонии, возникают следующие ошибки:

На вкладке «Сессии»: «Cannot format given Object as Date»

На вкладке «Детализация» при попытке сохранить отчет в любом виде или послать по электронной почте, письмо не приходит, а файл, куда происходит сохранение имеет размер 0 байт.

Только что обновился до последних версий по инструкции. Ничего не изменилось. Что посоветуете?

Вернуться к началу

Профиль  

Администратор

Заголовок сообщения:

СообщениеДобавлено: 06 май 2008, 11:50 

Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93

Можете выложить ошибки из server.out?

Вернуться к началу

Профиль  

k41n

Заголовок сообщения:

СообщениеДобавлено: 06 май 2008, 12:28 

Не в сети

Зарегистрирован: 24 окт 2007, 16:24
Сообщения: 7
Карма: 0

Конечно! Рад, что кто-то откликнулся!

Вернуться к началу

Профиль  

Администратор

Заголовок сообщения:

СообщениеДобавлено: 06 май 2008, 14:43 

Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93

Как я понял, у вас проблема с модулем Phone? Переместите тему в соответсвующую ветку. С ошибкой разбираемся.

Вернуться к началу

Профиль  

Администратор

Заголовок сообщения:

СообщениеДобавлено: 06 май 2008, 14:51 

Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93

Какая версия Java сейчас? Попробуйте обновить.

Вернуться к началу

Профиль  

k41n

Заголовок сообщения:

СообщениеДобавлено: 07 май 2008, 12:21 

Не в сети

Зарегистрирован: 24 окт 2007, 16:24
Сообщения: 7
Карма: 0

Версия явы:

[root@onyx BGBillingServer]# cat server_start.sh

#!/bin/sh

cd ${0%${0##*/}}.

JAVA_HOME=/opt/java

./server.sh start[root@onyx BGBillingServer]# /opt/java/

bin/ db/ demo/ include/ jre/ lib/ man/ sample/

[root@onyx BGBillingServer]# /opt/java/bin/java -version

java version «1.6.0_04»

Java(TM) SE Runtime Environment (build 1.6.0_04-b12)

Java HotSpot(TM) Server VM (build 10.0-b19, mixed mode)

[root@onyx BGBillingServer]#

Тему прошу перенести, я сам не могу.

Вернуться к началу

Профиль  

Администратор

Заголовок сообщения:

СообщениеДобавлено: 19 июн 2008, 16:27 

Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93

Проблема еще актуальна? Если да — кидайте ссш доступ в личку к серверу.

Вернуться к началу

Профиль  

Xo4yxa

Заголовок сообщения: Re: Cannot format given object as Date

СообщениеДобавлено: 13 окт 2011, 11:23 

Не в сети

Зарегистрирован: 28 сен 2011, 11:40
Сообщения: 60
Карма: 0

актуальна но у меня! версия 5.2

Информация о версии:

Клиент: вер. 5.2 сборка 735 от 13.10.2011 02:46:41
os:Mac OS X; java:Apple Inc., v.1.6.0_26
Сервер: вер. 5.2 сборка 889 от 13.10.2011 02:46:30
os:Linux; java:Sun Microsystems Inc., v.1.6.0_27

bill вер. 5.2 сборка 211 от 20.09.2011 13:55:37
npay вер. 5.2 сборка 145 от 21.09.2011 17:44:46
phone вер. 5.2 сборка 200 от 26.08.2011 16:05:22

_________________
Клиент: вер. 5.2 сборка 1027 от 27.08.2012 12:07:51
Сервер: вер. 5.2 сборка 1283 от 28.08.2012 11:38:39

Вернуться к началу

Профиль  

Администратор

Заголовок сообщения: Re: Cannot format given object as Date

СообщениеДобавлено: 24 окт 2011, 18:37 

Не в сети
Разработчик

Зарегистрирован: 27 ноя 2006, 20:36
Сообщения: 5715
Карма: 93

Ну выложите ваш server.out, server.error.log, там такие же ошибки?

Вернуться к началу

Профиль  

Невозможно форматировать данный объект как число

Вопрос:

этот кусок кода меня бросает: невозможно форматировать данный объект как число

  private BigDecimal notional;

public String getNotional() {
System.out.println("notional:" + notional);
otherSymbols.setDecimalSeparator(',');
otherSymbols.setGroupingSeparator('.');
System.out.println("notional:" + notional);
String format = df.format(notional);
System.out.println("notional2:" + format);


if(notional!=null)
notional = new BigDecimal(df.format(notional));
return notional.toString();
}

Зачем?

   javax.el.ELException: /pages/emir/acknowledgedTransactions.xhtml @484,160 value="#{ackTxContractBean.firstleg.notional}":
java.lang.IllegalArgumentException: Cannot format given Object as a Number

условный: 2279713.86 условный2: 2.279.713,86

Лучший ответ:

Вероятно, потому что вы, возможно, передаете формат вместо строки.

Конструктор BigDecimal, на который вы нацеливаетесь, принимает строку (BigDecimal (String)). Ни один из методов DecimalFormat.format, похоже, не принимает строку. Просто создайте свой BigDeciamal, а затем отформатируйте, если потом. Какой тип в любом случае является условным.

Нашел эту тему, которая, кажется, делает то, что вы хотите.

The format() method of DecimalFormat is overloaded.

In the working case, you are invoking :

 public final String format(double number)

And in the failing case, you are invoking :

 public final String format (Object obj) 

The first method takes a very specific argument. It expects a double.

This is not the case of the second one, which the type accepted is very broad : Object and where so the check on the type passed is performed at runtime.

By providing a argument that is not a double but a String, the method invoked is the second one.

Under the hood, this method relies on the format(Object number, StringBuffer toAppendTo, FieldPosition pos) method that expects to a number argument that is an instance of the Number class (Short, Long, … Double):

@Override
public final StringBuffer format(Object number,
                                 StringBuffer toAppendTo,
                                 FieldPosition pos) {
    if (number instanceof Long || 
        number instanceof Integer ||                   
        number instanceof Short || 
        number instanceof Byte ||                   
        number instanceof AtomicInteger ||
        number instanceof AtomicLong ||
        (number instanceof BigInteger && ((BigInteger)number).bitLength () < 64)) {

        return format(((Number)number).longValue(), toAppendTo, pos);
    } else if (number instanceof BigDecimal) {
        return format((BigDecimal)number, toAppendTo, pos);
    } else if (number instanceof BigInteger) {
        return format((BigInteger)number, toAppendTo, pos);
    } else if (number instanceof Number) {
        return format(((Number)number).doubleValue(), toAppendTo, pos);
    } else {
        throw new IllegalArgumentException("Cannot format given Object as a Number");
    }
}

But it is not the case as you passed to it a String instance.

To solve the problem, either pass a double primitive as in the success case or convert your String into an instance of Number such as Double with Double.valueOf(yourString).
I advise the first way (passing a double) as it is more natural in your code that already uses double primitives.
The second one requires a additional conversion operation from String to Double.

I’m new to Java and am running this code to display the contents of one table in my database(logs).
The function getData converts the ResultSet into a 2D string array and returns it. This funtion is working fine for all the other queries.
Also in my database TimeStamp is of Time Stamp type. Is that creating the problem?

package stock;

public class ViewTrans extends javax.swing.JFrame {


public ViewTrans() {
    initComponents();
    Login l=new Login();
    String uname=l.getUsername();
    dbconnect db=new dbconnect();
    String str[][]=db.getData("select SName,Amount,Value,TimeStamp,Operation,Brokerage from logs where UserName='"+uname+"'");
    for(int i=0;i<10;i++)

    {
        for(int j=0;j<5;j++)
        {
            ltable.setValueAt(str[i][j],i,j);

        }
    }
}


@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">                          
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    ltable = new javax.swing.JTable();
    homebutton = new javax.swing.JButton();
    viewaccbutton = new javax.swing.JButton();
    viewcurrstockbutton = new javax.swing.JButton();
    ebutton = new javax.swing.JButton();
    jLabel1 = new javax.swing.JLabel();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    ltable.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null},
            {null, null, null, null, null, null}
        },
        new String [] {
            "Company Name", "No of Shares", "Value of Share", "TimeStamp", "Operation", "Brokerage"
        }
    ) {
        Class[] types = new Class [] {
            java.lang.String.class, java.lang.Integer.class, java.lang.Double.class, java.lang.Object.class, java.lang.String.class, java.lang.Double.class
        };

        public Class getColumnClass(int columnIndex) {
            return types [columnIndex];
        }
    });
    jScrollPane1.setViewportView(ltable);

    homebutton.setText("Home");
    homebutton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            homebuttonActionPerformed(evt);
        }
    });

    viewaccbutton.setText("View Account");
    viewaccbutton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            viewaccbuttonActionPerformed(evt);
        }
    });

    viewcurrstockbutton.setText("View Current Stock");
    viewcurrstockbutton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            viewcurrstockbuttonActionPerformed(evt);
        }
    });

    ebutton.setText("Exit");
    ebutton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            ebuttonActionPerformed(evt);
        }
    });

    jLabel1.setText("Your Transactions:");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(20, 20, 20)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jLabel1)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 497, javax.swing.GroupLayout.PREFERRED_SIZE)))
        .addGroup(layout.createSequentialGroup()
            .addGap(49, 49, 49)
            .addComponent(homebutton)
            .addGap(36, 36, 36)
            .addComponent(viewaccbutton)
            .addGap(28, 28, 28)
            .addComponent(viewcurrstockbutton)
            .addGap(33, 33, 33)
            .addComponent(ebutton))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap(13, Short.MAX_VALUE)
            .addComponent(jLabel1)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 191, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addGap(45, 45, 45)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                .addComponent(viewaccbutton)
                .addComponent(viewcurrstockbutton)
                .addComponent(homebutton)
                .addComponent(ebutton))
            .addGap(82, 82, 82))
    );

    pack();
}// </editor-fold>                        

private void homebuttonActionPerformed(java.awt.event.ActionEvent evt) {                                           
   HomePage h=new HomePage();
   h.setVisible(true);
   dispose();
}                                          

private void ebuttonActionPerformed(java.awt.event.ActionEvent evt) {                                        
   dispose();
}                                       

private void viewcurrstockbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                                    
   ViewStock vs=new ViewStock();
   vs.setVisible(true);
   dispose();
}                                                   

private void viewaccbuttonActionPerformed(java.awt.event.ActionEvent evt) {                                              
   ViewAccount h=new ViewAccount();
   h.setVisible(true);
   dispose();
}                                             


public static void main(String args[]) {

    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new ViewTrans().setVisible(true);
        }
    });
}

// Variables declaration - do not modify                     
private javax.swing.JButton ebutton;
private javax.swing.JButton homebutton;
private javax.swing.JLabel jLabel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTable ltable;
private javax.swing.JButton viewaccbutton;
private javax.swing.JButton viewcurrstockbutton;
// End of variables declaration                   
}

I get the following error:

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Number
    at java.text.DecimalFormat.format(DecimalFormat.java:505)
    at java.text.Format.format(Format.java:157)
    at javax.swing.plaf.synth.SynthTableUI$SynthTableCellRenderer.configureValue(SynthTableUI.java:803)
    at javax.swing.plaf.synth.SynthTableUI$SynthTableCellRenderer.getTableCellRendererComponent(SynthTableUI.java:790)
    at javax.swing.JTable.prepareRenderer(JTable.java:5736)
    at javax.swing.plaf.synth.SynthTableUI.paintCell(SynthTableUI.java:684)
    at javax.swing.plaf.synth.SynthTableUI.paintCells(SynthTableUI.java:581)
    at javax.swing.plaf.synth.SynthTableUI.paint(SynthTableUI.java:365)
    at javax.swing.plaf.synth.SynthTableUI.update(SynthTableUI.java:276)
    at javax.swing.JComponent.paintComponent(JComponent.java:778)
    at javax.swing.JComponent.paint(JComponent.java:1054)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JViewport.paint(JViewport.java:731)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paint(JComponent.java:1063)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:585)
    at javax.swing.JComponent.paintChildren(JComponent.java:887)
    at javax.swing.JComponent.paintToOffscreen(JComponent.java:5226)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1529)
    at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1452)
    at javax.swing.RepaintManager.paint(RepaintManager.java:1249)
    at javax.swing.JComponent.paint(JComponent.java:1040)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:78)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:115)
    at java.awt.Container.paint(Container.java:1967)
    at java.awt.Window.paint(Window.java:3877)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:819)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:796)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:796)
    at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:769)
    at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:718)
    at javax.swing.RepaintManager.access$1100(RepaintManager.java:62)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1677)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:733)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:703)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

5 ответов

Я не думаю, что есть способ сделать это только с DecimalFormat, но этот однострочный файл позаботится о проблеме:

formattedValue = formattedValue.replaceAll( "^-(?=0(.0*)?$)", "");

Он удаляет (заменяет на "") знак минус, если за ним следуют 0-n символов "0.00000...", поэтому это будет работать для любого аналогичного результата, такого как "-0", "-0." или "-0.000000000"

Вот несколько тестовых кодов:

public static void main(String[] args) {
    System.out.println(format(-0.023));
    System.out.println(format(12.123));
    System.out.println(format(-12.345));
    System.out.println(format(-0.123));
    System.out.println(format(-1.777));
}

public static String format(double number) {
    DecimalFormat df = new DecimalFormat("#,##0.0");
    df.setRoundingMode(RoundingMode.HALF_UP);
    String formattedValue = df.format(number);
    formattedValue = formattedValue.replaceAll("^-(?=0(.0*)?$)", "");
    return formattedValue;
}

Выход (как ожидалось):

0.0
12.1
-12.3
-0.1
-1.8

Bohemian
13 авг. 2012, в 08:25

Поделиться

Я думаю, что это было бы обходным путем, чтобы избежать -0.0. Используйте следующий код:

DecimalFormat df = new DecimalFormat("#,##0.0");
df.setRoundingMode(RoundingMode.HALF_UP);       
df.setNegativePrefix(""); // set negative prefix BLANK
String formattedValue = df.format(-0.023);
df.setNegativePrefix("-"); // set back to - again
System.out.println(formattedValue);

Выход:

0.0

Nandkumar Tekale
13 авг. 2012, в 08:11

Поделиться

Попробуйте следующее: DecimalFormat df = new DecimalFormat("#,##0.0#;(#,##0.0#)");

В соответствии с Javadoc для DecimalFormat:

Паттерн DecimalFormat содержит положительный и отрицательный подшаблон, например, «#, ## 0.00; (#, ## 0.00)». Каждый подшаблон имеет префикс, числовая часть и суффикс. Отрицательный подшаблон является необязательным; если отсутствует, то положительный подшаблон с префиксом локализованного минуса знак (‘-‘ в большинстве локалей) используется как отрицательный подшаблон. Что «0,00» только эквивалентно «0,00; -0,00». Если есть явный отрицательный подшаблон, он служит только для указания отрицательного префикс и суффикс; количество цифр, минимальные цифры и другие характеристики все те же, что и положительный. Это значит что «#, ## 0.0 #; (#)» производит точно такое же поведение, как. «#, ## # 0,0; (#, ## # 0,0)»

Sujay
13 авг. 2012, в 06:34

Поделиться

Чтобы проверить, вычисленное value = «-0.0»
сделайте его равным «0.0»

и вы можете запрограммировать sushus как

public String getFormattedValue(String input) {
        DecimalFormat df = new DecimalFormat("#,##0.0");
        df.setRoundingMode(RoundingMode.HALF_UP);
        String formattedValue = df.format(input);

        if (formattedValue.equalsIgnoreCase("-0.0")) {
            formattedValue = "0.0";
        }

        System.out.println(formattedValue);
        return formattedValue;
    }

BolBol
13 авг. 2012, в 06:40

Поделиться

Я считаю, что -0 весьма полезен, потому что он сообщает вам, что округленное значение было фактически отрицательным (что может иметь большой смысл для некоторых функций). Единственная проблема для меня в том, что -1 * 0 на самом деле действительно 0 и должен быть отформатирован как 0, хотя это не с Java formatters.

Следующий форматтер позаботится об этом, без дорогостоящей стоимости манипуляции с String (особенно RegExps):

public static String formatWithoutMinusZeroIssue(double d, DecimalFormat yourFormatter) {
    if (d == 0) {
        return yourFormatter.format(0);
    } else {
        return yourFormatter.format(d);
    }
}

Это использует тот факт, что хотя -1 * 0 и 0 отформатированы по-разному, они равны.

jolivier
27 март 2017, в 14:28

Поделиться

Ещё вопросы

  • 0Возможно ли получить ссылку на массив от референта его элемента?
  • 1Python Selenium: получить значения из выпадающего списка
  • 1Игнорируйте отсутствующие изображения в SVG с данными D3 и введите методы [дубликаты]
  • 0Проблема перестановки узлов с двойным списком
  • 0PHP регулярное выражение заменить из строки в строку
  • 0Угловая ошибка: [by: areq]
  • 1Функция расширения Kotlin с запросом на отдых сервера
  • 1После каждого Enqueue () все значения в очереди становятся одинаковыми
  • 1Отображение части ImageIcon
  • 1Как открыть разговор в WhatsApp на определенный номер с намерением
  • 1Функция Python re.sub (), преобразующая « t» в пути к файлу в символ табуляции
  • 0Как использовать React JSX внутри угловой директивы
  • 1аргументы во Фрагменте все еще нулевые
  • 0Можно ли избежать только внешних подключений к моему xdebug с помощью Ngnix и PHPStorm?
  • 1C # Reflection: В чем разница между FieldInfo.SetValue () и FieldInfo.SetValueDirect ()?
  • 0Как загрузить AJAX файл без ошибок?
  • 0Анимация jQuery работает нормально в FF, но плохо во всех других браузерах
  • 0Как я могу непрерывно запускать функцию после добавления данных и завершения работы с этими данными
  • 0symfony2: нельзя вставить в форму слияния один-к-одному
  • 0Скрыть блоки, которые не соответствуют контейнеру фиксированного размера
  • 0Игра встряхивания мыши Javascript не работает должным образом
  • 1Ошибка: (29, 34) Несоответствие типов: предполагаемый тип — String? но редактируемый! ожидалось
  • 0Как сделать снимок конечного результата после удаления элемента на изображение с помощью JavaScript?
  • 1расчет тепловой карты панд на море
  • 1Заменить поля объекта
  • 0Лучше ли всегда проверять возвращаемое значение PDOStatement :: execute?
  • 0Как взять содержимое из текстового поля и поместить его в переменную и div в JavaScript
  • 1графическое изображение простых лиц из базы данных не загружается
  • 0Не удается получить единый стиль в браузерах для календаря
  • 0Видеоплеер с пользовательским меню?
  • 1Ошибка при преобразовании кадра данных pandas в спарк Dataframe
  • 0Конкатенация динамического целочисленного значения в функции php
  • 0Добавление динамических радиокнопок в угловых
  • 0Получить закладки из области видимости Chrome
  • 0Ошибка синтаксиса локального файла данных MYSQL
  • 1Использование нескольких регулярных выражений в C # web crawler [duplicate]
  • 0Зависимый выпадающий не работает
  • 0cv :: putText в IplImages
  • 0Как перенаправить пользователя обратно на предыдущую страницу после входа в систему?
  • 1стратегия tablePerHierarchy без столбца дискриминатора в Hibernate
  • 0Как выбрать данные списка Python и заполнить их конкретным блоком ввода — pretype
  • 0Создать сообщение об успешной отправке формы php
  • 0Пагинация в Yii без базы данных
  • 0Получить строки внутри двойных скобок [дубликаты]
  • 0Сообщение о перемещении объекта круга в Картах Google перед тем, как сделать его видимым
  • 1Как вытащить данные с сервера sas в hdfs, используя Java?
  • 0Как мне создать регулярное выражение, которое добавляет все мои селекторы стиля с идентификатором
  • 3Как проверить пользовательскую функцию потерь в керасе?
  • 0Поведение компилятора для целочисленных указателей на необъявленную память
  • 1API-интерфейс SMS-ретривера: SMSBroadcastReceiver не распознает полученное сообщение.

Возможно, вам также будет интересно:

  • Cannot find in scope swift ошибка
  • Cannot find efi directory grub install ошибка
  • Cannot find appropriate setup exe file matlab ошибка
  • Cannot find a compatible graphics card dirt 5 ошибка
  • Cannot drop database because it is currently in use microsoft sql server ошибка 3702

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии