我在我的持久存储系统中使用 Google 的协议缓冲区库并希望保留货币值,但我不确定 photo (float/double) 提供的浮点类型是否足够好。将我的所有货币值存储为字符串(例如存储“0.10”而不是 0.1),然后在检索数据并需要进行算术运算时使用 Convert.ToDecimal 函数是否有任何缺点?
问问题
242 次
1 回答
0
您认为数据类型不适合“货币”是正确的!float/double
考虑一下 SQL 数据库(以及,呃,COBOL
程序......)通常如何存储“货币”值:它们使用某种十进制表示。例如,一个真正的COBOL
程序可能使用“二进制编码的十进制 (BCD)”数据类型。Microsoft Access 数据库使用“缩放整数”:美元和美分的值乘以 10,000,得到一个固定的(!) “小数点右侧的 4 位数字”。
出于这个问题的直接目的,我肯定会将值存储为字符串,然后非常认真地考虑要存储的位数以及如何处理“四舍五入”到该位数。(例如,有诸如“银行家四舍五入”之类的算法。)
“存储大小?” 你不在乎那个。您真正关心的是,如果某个特定客户(或审计员……)实际上将打印报表上的所有数字相加,那张纸上的底线将同意……在非常( !)至少,在一分钱之内。
于 2016-07-25T03:08:02.027 回答