这是其中的一个例子,我认为解决方案在谷歌上,但我甚至不知道搜索词是什么。 甚至是在StackOverflow上使用的wich标记。
情况:
彩车并不精确。 一个常见的技巧是使用整数进行数学运算,然后在输出过程中移位小数点:
如果您需要欧元的小数点后4位精度(在金融行业中并不少见),您可以有效地以毫欧元进行测量和计算。 然后在输出过程中,将小数左移,并截断最后2位:
因此,作为int存储,检索和处理的int1234567
将作为/代表“123.45欧元”打印给普通最终用户。
问题:
但这与本地化有何互动? 。NET有一个很棒的部分,其中parse()
和toString()
查看当前Windows用户区域性设置,以确定当前的十进制分隔符,组分隔符和组大小。
在。NET中似乎没有固定点类型,来为我做工作。
有没有什么fomat字符串组合可以用来表示“将小数点4左移到数字中,省略最后2位数字)”?对于任何int,F2只会在小数点后加上两个空0.“1234567.00欧元”比“123.45欧元”差几个数量级。
到目前为止我最好的主意是:
从用户区域性的NumberDecimalSeparator
,NumberGroupSeparator
和NumberGroupSizes
中构建我自己的格式字符串--但是这是非常简单的,我似乎不应该这样做。 是不是有更好的一天去做呢,或者是我不得不去做那些有效的事情呢?
也许是这样的
using System.Globalization;
int n = 123456;
string price = "";
string priceW = "";
int i = 0;
foreach(char c in n.ToString())
{
i++;
if(i == n.ToString().Length - 1)
price += ".";
price += c;
}
float rPrice = float.Parse(price, CultureInfo.InvariantCulture.NumberFormat);
priceW = price + "€";