gpt4 book ai didi

c# - c# 中的数字格式 - 分隔整数和小数部分

转载 作者:行者123 更新时间:2023-11-30 21:08:01 25 4
gpt4 key购买 nike

我正在尝试做与 this c# docs example 非常相似的事情:

int value = 123;
Console.WriteLine(value.ToString(@"\#\#\# ##0 dollars and \0\0 cents \#\#\#"));
// Displays ### 123 dollars and 00 cents ###

除了我希望它实际使用小数:

double value = 123.095;
Console.WriteLine(value.ToString(@"\#\#\# ##0 dollars and 0000 \#\#\#"));
// Should display ### 123 dollars and 0950 ###, but it doesn't (of course)

尝试过:

Console.WriteLine(value.ToString(@"\#\#\# ##0. dollars and 0000 cents \#\#\#"));

但打印小数点分隔符(当然),这是我不想要的。
我知道我可以做这样的事情:

String.Format("{0:##0} {1:0000}", 123, 123);

但很想避免,除非没有别的办法

最佳答案

可以定义您自己的特殊货币格式,但是...我不确定我是否会这样做。这似乎是对 NumberFormatInfo 对象的滥用:

编辑:将值的数据类型从十进制更改为 double

// works with either decimal or double
double value = 123.095;

var mySpecialCurrencyFormat = new System.Globalization.NumberFormatInfo();

mySpecialCurrencyFormat.CurrencyPositivePattern = 3;
mySpecialCurrencyFormat.CurrencyNegativePattern = 8;
mySpecialCurrencyFormat.NegativeSign = "-";
mySpecialCurrencyFormat.CurrencySymbol = "cents";
mySpecialCurrencyFormat.CurrencyDecimalDigits = 4;
mySpecialCurrencyFormat.CurrencyDecimalSeparator = " dollars and ";
mySpecialCurrencyFormat.CurrencyGroupSeparator = ",";
mySpecialCurrencyFormat.CurrencyGroupSizes = new[] { 3 };


Console.WriteLine(value.ToString("C", mySpecialCurrencyFormat));

输出是“123 美元和 0950 美分”

编辑:使用 CurrencyNegativePattern 15 而不是 8 可能更有意义,这样负值会导致整个字符串被括号包围,这可能比在美元前面放一个负号更容易混淆。例如,使用 CurrencyNegativePattern = 15 会导致 -123.095 输出为“(123 美元和 0950 美分)”

关于c# - c# 中的数字格式 - 分隔整数和小数部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9926231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com