Postgresql

Postgresql 數字和小數自動四捨五入

  • July 14, 2019
CREATE TABLE IF NOT EXISTS ttable (
   tcol decimal(9,7)
);
insert into ttable(tcol) values(17.4604786);

該值被儲存為17.46

如果我使用十進制/數字類型,也會發生同樣的情況

在 x86_64-apple-darwin16.7.0 上使用 PostgreSQL 11.2,由 Apple LLVM 版本 8.1.0 (clang-802.0.42) 編譯,64 位。

工具

SQL Workbench/J Build 124 (2018-08-20 22:43)

Java 版本:1.8.0_211(64 位)。

連接資訊:

產品名稱:PostgreSQL

產品版本:11.2

產品資訊:11.2

驅動程序名稱:PostgreSQL JDBC 驅動程序驅動

程序類:org.postgresql.Driver

驅動程序版本:42.2.6

隔離級別:READ COMMITTED

Workbench DBID:postgresql

這似乎是 SQL Workbench 的預設行為,看看這篇文章:

如何在 SQL Workbench 上更改十進制數據類型的解析度或比例。

引自文章:

通常,SQL Workbench 不會以滿刻度顯示十進制數據。預設比例為2。我們可以通過設置來改變比例。

解決方案

  1. 打開數據格式設置。SQLWorkBench -> 首選項 -> 數據格式
  2. 更改小數位數 預設為 2。在這種情況下,至少應為 11。

並根據有關數據格式化的 SQL Workbench 手冊:

十進制數字

定義將在數字列中顯示的最大位數。這只影響數字的顯示,不影響儲存或檢索。在 DBMS 返回它們時,它們仍然在內部儲存。要查看內部值,請將滑鼠游標懸停在單元格上。顯示的工具提示將包含 JDBC 驅動程序返回的數字。導出數據或將其複製到剪貼板時,將使用實際值。

如果此值設置為 0(零),則將顯示盡可能多的數字。

(粗體是我的)

引用自:https://dba.stackexchange.com/questions/242837