двойна стойност 0.0001 ще преобразува в 1.0E-4 при вмъкване в базата данни

Бих искал да предам двойната стойност, получена от уеб страницата, към базата данни на sqlServer. стойността е обвита в стойностен обект.

public class testVO{
    Double value;

    public Double getValue() {
        return value;
    }

    public void setValue(Double value) {
        this.value = value;
    }

}

Проблемът, който срещнах обаче, е, че когато стойността е по-малка от 0,0001, тя ще се прехвърли в 1.0E-4 или друга научна нотация, което причинява грешка в базата данни.

Начинът, който намерих, е да използвам BigDecimal.valueOf(testVO.getValue()), за да го анализирам.

Има ли друг по-добър начин за решаването му?


Решено: Не е поради проблем с научна нотация, Базата от данни може да чете както число, така и научна. Проблемът е, че помощният пакет, който използвах, докато го анализирах в база данни, ще преобразува цялата стойност в тип низ, надявайки се да не си губите времето!


person Will    schedule 30.07.2014    source източник
comment
Няма разлика между 0,0001 и 1,0e-4. Как го поставяте в базата данни?   -  person Gabe    schedule 30.07.2014
comment
Обзалагам се, че го е превърнал в низ.   -  person Alberto Bonsanto    schedule 30.07.2014
comment
О, мисля, че разбирам! sqlServer може да чете както 0.0001, така и 1.0e-4, може да направя нещо грешно, докато го анализирам в sql String. Благодаря ти!   -  person Will    schedule 30.07.2014


Отговори (1)


Двойното умножение може да доведе до неочакван резултат. Проверете кода по-долу.

    double a = 0.3;
    double b = 0.1 + 0.1 + 0.1;
    if(a == b) {
        System.out.println("Equal");
    } else {
        System.out.println("Not Equal");
    }

Резултатът ще бъде Not Equal. Както каза Alberto Bonsanto, използвайте String за запазване в базата данни. Използвам BigDecimal за процес на изчисление и го запазвам като низ и (числово за sqlserver) в базата данни.

person Zaw Than oo    schedule 30.07.2014
comment
Благодаря! между другото, бихте ли обяснили повече за запазването му като низ и число за sqlserver в базата данни. Искате да кажете, че записвате като числов тип в sqlSever и низ в друга база данни? и защо? - person Will; 30.07.2014
comment
@Will, когато използвам sqlserver, използвам numeric. за мен е добре. Друга база данни, още не съм я използвал. Мисля, че може да има тип данни като numeric. Например number. Ако използвате String, всичко е наред. може да се наложи програмно да преобразува String в Number виза. - person Zaw Than oo; 30.07.2014