Jam*_*mes 40 c# currency cultureinfo
我需要在SQL服务器中存储多种货币.我知道SQL不支持所有不同类型的货币(除非我将其存储为字符串,但我不想这样做).
我的想法是将所有值从他们的货币格式转换为标准的双倍并存储它.然后在显示时根据文化信息重新格式化.但是,我尝试过做类似的事情
var cultureInfo = new System.Globalization.CultureInfo("en-US");
double plain = return Double.Parse("$20,000.00", cultureInfo);
Run Code Online (Sandbox Code Playgroud)
这似乎永远不会工作它总是抛出一个FormatException.即使删除货币符号,只是尝试根据数字单独执行此操作也会做同样的事情.这只是一个例子,我想支持几乎任何类型的货币.
是否有一种标准的方式来剥离货币并将价值变为双倍?
Han*_*son 97
我认为这应该有效:
double.Parse(currencyValue, NumberStyles.Currency);
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到有关NumberStyles的更多信息.
编辑:如果有人在没有查看其他答案/评论的情况下看到这个答案,这个答案回答了所写的问题,但将货币存储double为不是一个好主意,最好使用十进制代替.
Chr*_*lor 21
您应该将NumberStyles传递给Parse函数
Decimal.Parse("$20,000.00", NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands, new CultureInfo("en-US"));
Run Code Online (Sandbox Code Playgroud)
其他一些东西,对于货币,我建议你使用十进制.这可能会有所不同,但最好将货币数据存储为数据库中的Money,并添加货币代码以识别值的货币.
是的,答案建议使用NumberStyles.Currency会更好.如果您仍然认为要使用字符串,那么这是一个预先定义的值.
| 归档时间: |
|
| 查看次数: |
71575 次 |
| 最近记录: |