Я использую Odoo v8 и обнаружил интересное поведение.Непоследовательные данные считываются, когда поле Float объявляется с цифрами.
Когда я объявить Float с цифрами:
pension_unit_rate = fields.Float(digits=(16,4))
и положить
<field name="pension_unit_rate" widget="progressbar"/>
в своих данных 0,06 определение представления и ввода в записи и сохранить данные хранятся правильно, как 0,06 в postgresql.
Но когда я нажимаю кнопку «Изменить», данные, возвращаемые из базы данных, составляют 0.060000000000000005.
Я проверил, что данные в базе данных правильно (0,06) с использованием pgAdmin и простой проверке кода:
instance.web.form.FieldProgressBar = instance.web.form.AbstractField.extend({
template: 'FieldProgressBar',
render_value: function() {
this.$el.progressbar({
value: this.get('value') || 0,
disabled: this.get("effective_readonly")
});
**console.log(this.get('value'))**
var formatted_value = instance.web.format_value(this.get('value') || 0, { type : 'float' });
this.$('span').html(formatted_value + '%');
}});
Похоже, что данные, хранящиеся в «значение» является +0,060000000000000005, который не согласуется с существующими данными в база данных.
Это связано с использованием числовых данных при использовании цифр? Есть ли обходной путь или исправление?
Заранее благодарен
Если вы хотите точные цифры, вы не должны использовать 'float' в первую очередь: http://floating-point-gui.de/ –