当前位置: 首页 > 知识库问答 >
问题:

如何在web应用程序中处理和/或存储货币价值?[副本]

冯亮
2023-03-14

我在Laravel4和MySQL中使用PHP,我不知道如何处理货币值。

我想使用以下格式显示它们:

  120,50€
1.000,50€

金额字段的类型为十进制(12,2)

我应该像12050或像120,50那样保存金额吗?

共有1个答案

窦伟
2023-03-14

我建议使用:

>

  • 数据库中的十进制欧元值(1000.50)

    计算中的美分(100050)

    显示给用户的格式化字符串(1.000,50欧元)

    对于在MySQL数据库中存储字段,类似于DECIMAL(12,2)的内容非常有意义。这是一个具有正确感知的数值(两个十进制数字),允许您存储最大为9999999999.99的任何货币值。

    美分对于计算非常有用,因为它允许您在计算中将货币值视为整数,这更实用(特别是对于除法和乘法),并且通常是您希望货币值向上或向下舍入的级别。

    无论您如何在数据库中存储数据或如何进行计算,您都希望用户以他们熟悉的格式查看金额。例如,美元的格式通常为1000.50美元,欧元的格式通常为1.000,50欧元。

  •  类似资料:
    • 问题内容: 我正在应用程序中处理许多不同的货币,我想知道将它们存储在SQLite3数据库中的“最佳”方法是什么。 我倾向于定点表示(即,将它们存储为整数,其中$ 3.59被存储为359,¥400被存储为40000)。这是一个好主意吗?如果我的输入数据以后更改并且需要更高的精度怎么办? 问题答案: 鉴于SQLite 3将最多使用8个字节来存储INTEGER类型,除非您要使用大于10 ^ 16的数字,

    • 问题内容: 在一个新项目中,我正在以CSV格式导入到mysql表中的数据。列之一是价格字段,该字段以欧洲格式(即,欧元)存储货币。345,83。我遇到的问题是存储此十进制分隔符。在大多数欧洲货币中,十进制分隔符为“,”,但是当我尝试在字段中插入十进制数字(例如345,83)时,出现以下错误:“行’row#的列’column_name’的数据被截断了’”。如果我使用“。” 而不是“,”可以正常工作。

    • 所以如果我们连接,我们必须在完成后分离线,对吗? 我调用下一个本机方法从@覆盖保护无效onDestroy()我的活动类 错误:使用interp帧分离线程(计数=16)-主线程仍在运行,我们尝试分离它。 即使我们使用任何使用JNIEnv的函数(例如调用java方法),放置DetachMoney tThread也会导致同样的错误。 如果在pthread函数中使用,DetachCurrentThread

    • 问题内容: 我正在创建一个返回Dictionary的,但是当我在另一个类中调用此方法时,其值为nil。 然后,我尝试在另一个类中调用它,以便可以查看Dictionary 的值并基于该值显示数据。例如, 这里的问题是,当我调用函数时,我在尝试调用字典时收到一个值。 简而言之,我的问题是如何为完成处理程序分配值并在Xcode项目中的其他位置调用它? 问题答案: 您的问题很乱。您的示例代码无效,并且没有

    • 我读过不同的Q 脚本: Raddo公司在英国、法国和美国设有3个分支机构。拉德多有基础货币美元。预算是以美元编制的。Raddo商店支持数据库中的库伦奇汇率。 英国员工以英镑创建采购订单,法国员工以欧元创建采购订单。 问题1:采购订单/订单项目数据库表中应存储哪些内容-分行所在地货币和当前汇率或以基础货币美元表示的换算金额?请记住,汇率必须是创建采购订单时的汇率。 问题2:转换什么以及何时能够生成美

    • 问题内容: 我想在MySQL数据库中存储许多记录。它们全部包含金钱价值。但是我不知道每个数字将插入多少个数字。 为此,我必须使用哪种数据类型? VARCHAR 或 INT (或其他数字数据类型)? 问题答案: 由于资金需要精确的表示,因此不要使用只近似的数据类型。您可以将定点数字数据类型用于 是精度(值的总长度,包括小数位) 是小数点后的位数 请参见MySQL数值类型: 当保留精确度非常重要时,例