2015-10-07 2 views
2

Я использую Ruby on Rails 4.2.3. Если я храню число с пятью десятичными знаками в поле базы данных, которое допускает только два десятичных знака, это число усечено или автоматически округлено?Делает Ruby Round или Truncate

Действительно ли 10.12565 стал 10.12 или 10.13?

Типы полей базы данных для обоих типов являются десятичными.

+7

Это зависит от вашей базы данных. Разве не проще просто проверить это? –

+2

Ruby ничего не делает в этом случае. Ваша база данных делает это. –

+1

Возможный дубликат [Float vs Decimal in ActiveRecord] (http://stackoverflow.com/questions/8514167/float-vs-decimal-in-activerecord) –

ответ

1

На основе документации: http://www.postgresql.org/docs/9.0/static/datatype-numeric.html

В разделе: 8.1.2. Числа с заданной точностью

Они будут автоматически круглый:

Если масштаб значения для хранения больше, чем масштаб заявленной колонки, система будет округлять значение указанного числа дробные цифры. Затем, если количество цифр слева десятичной точки превышает объявленную точность минус объявленная шкала , возникает ошибка.

Я хотел бы предложить создание базы данных для ожидаемого результата для этого поля с помощью: http://www.postgresql.org/docs/8.1/static/functions-math.html

Затем написание юнит-тесты, чтобы убедиться, что вы получаете желаемые результаты.

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