我想在MySQL数据库中存储许多记录.所有这些都包含货币价值.但我不知道每个数字会插入多少位数.
我必须为此目的使用哪种数据类型?
VARCHAR或INT(或其他数字数据类型)?
我正在编写一个挖掘货币兑换数据的Java程序.数据可以有多个十进制数字,例如"0.973047".经过一些研究,我发现BigDecimal是Java的正确数据类型,但我应该为PostgreSQL使用哪种数据类型?
可以像decimal(22,2)
MySQL 一样存储货币价值吗?我正在为虚拟世界编写基于Web的市场和广告网络.
我正在用 PHP 和 MySQL 构建一种会计系统。我的数据库包含DECIMAL (11,2)
货币列,以及DECIMAL
货币操作中使用的所有其他值(例如要应用的百分比)。我以前从未编写过类似的程序,所以我不确定我做的是正确的事情。
我在数据库中使用的精度级别是否正确?
在 PHP 方面:
我是否应该对以后可能存储在数据库中的任何值使用 BC Math 函数?
我还必须使用,
小数点和.
千位分隔符来格式化货币值。我知道number_format
,最近发现money_format
,但手册说两者都使用浮子进行操作。
我可以使用number_format
或money_format
作为将要显示的值,或导出到 CSV 或 Excel 的值吗?
尝试从 MySQL 数据库读取的 BigDecimal 创建 Joda-MoneyMoney
对象会引发错误。
这段代码:
PreparedStatement p_stmt = ...;
ResultSet results = ...;
Money amount = Money.of(CurrencyUnit.USD, results.getBigDecimal("amount"));
Run Code Online (Sandbox Code Playgroud)
抛出这个:
java.lang.ArithmeticException: Scale of amount 1.0000 is greater than the scale of the currency USD
at org.joda.money.Money.of(Money.java:74)
at core.DB.getMoney(DB.java:4821)
Run Code Online (Sandbox Code Playgroud)
我实际上已经通过添加舍入解决了该错误:
Money amount = Money.of(CurrencyUnit.USD, results.getBigDecimal("amount"), RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)
但是,我对这个解决方案持怀疑态度。是最好的吗?
我用来按照这个 SO 答案DECIMAL(19,4)
将货币值存储在数据库上。老实说,这有点让我困惑,为什么那里的回答者要求数据库上的小数点后 4 位精度,但我倾向于相信高价值的答案,并且我认为他们知道他们在说什么,并且我会后悔没有遵循他们的要求建议。然而 Joda-Money 不喜欢美国货币的小数点后 4 位精度。也许是国际标准要求小数点后 4 位精度?没有把握..DECIMAL(19,4)
为了使问题简洁:
RoundingMode.HALF_UP
解决此错误的理想解决方案吗?DECIMAL(19,4)
吗DECIMAL(19,2)
?我正在处理美元金额。在MySQL数据库中,以下字段的费用和费率(百分比)为DECIMAL类型,两位精度。
SELECT ROUND(fee * (1- rate/100))),2 ) as profit
from products
Run Code Online (Sandbox Code Playgroud)
由于查询只是返回值而不是将它们保存在变量中,因此精度问题*是否仍然存在(PHP或JS附带)?如果是这样,最好在PHP或JS中舍入浮点数吗?
*是的,我的意思是保存双精度时出现的精度问题,例如1.5可能会另存为1.49999999
可能重复:
货币的最佳数据类型
我的数据库中有一个表格,用于存储产品价格; 列类型设置为DECIMAL(12, 2)
.但是,每当我添加以下价格时:1,199.00
保存它,由于某种原因它会转换为1.00.
或者,如果我添加一个类似的价格12,000.00
,它会将其转换为12.我应该使用其他类型的字段还是添加其他值DECIMAL
?
SQL Server中货币值的数据类型是什么。
例如:我要存储$11.23
。
我可以使用货币类型,并且还会存储$
符号吗?
我的 sql 数据库中有数据,我645.000
需要将其格式化以包含货币符号,例如,$645.000
如何在 SQL 中实现这一点?
mysql ×6
currency ×4
java ×2
jdbc ×2
php ×2
sql ×2
sql-server ×2
sqldatatypes ×2
bcmath ×1
decimal ×1
formatting ×1
joda-money ×1
postgresql ×1
precision ×1