我有一个表,该表的列名为total
,数据类型为real
。
但是我在查询其值时发现该列已被四舍五入,如下所示:
SELECT total FROM data WHERE id='xe54g';
total
---------
105861
UPDATE data SET total=105860.5 WHERE id='xe54g';
UPDATE 1
SELECT total FROM data WHERE id='xe54g';
total
---------
105860
UPDATE data SET total=105860.7 WHERE id='xe54g';
UPDATE 1
SELECT total FROM data WHERE id='xe54g';
total
---------
105861
\d+ data
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
-----------+-------+-----------+----------+-----------+----------+--------------+-------------
total | real | | | 0 | plain | |
如何获取返回的全精度?我正在使用PG 11.1。
答案 0 :(得分:1)
您可以通过设置获得完整的精度
export class InputSelectorDirective {
@HostBinding('attr.type') inputType: string = "checkbox";
ngControl: NgControl;
constructor(
private R: Renderer2,
private elRef: ElementRef<HTMLInputElement>,
private injector: Injector
) {
this.ngControl = injector.get(NgControl);
}
ngOnInit() {
// this.inputType = "checkbox";
this.ngControl.control.valueChanges
.subscribe(value => this.ngControl.control.setValue(this.elRef.nativeElement.checked, { emitEvent: false }));
}
}
然后PostgreSQL也将显示可能包含舍入错误的十进制数字。
请注意,extra_float_digits = 3
的有效数字较少。如果您使用real
,会更快乐。