如何将双精度格式设置为四舍五入到最接近的美元的货币?

发布于 2024-07-21 07:45:07 字数 241 浏览 6 评论 0原文

现在我有

double numba = 5212.6312
String.Format("{0:C}", Convert.ToInt32(numba) )

This will 给我,

$5,213.00

但我不想要“.00”。

我知道我每次都可以删除字符串的最后三个字符来达到效果,但似乎应该有一种更简单的方法。

Right now I have

double numba = 5212.6312
String.Format("{0:C}", Convert.ToInt32(numba) )

This will give me

$5,213.00

but I don't want the ".00".

I know I can just drop the last three characters of the string every time to achieve the effect, but seems like there should be an easier way.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

知你几分 2024-07-28 07:45:07

首先 - 不要将货币保存在 double 中 - 使用 decimal 代替。 每次。 然后使用“C0”作为格式说明符:

decimal numba = 5212.6312M;
string s = numba.ToString("C0");

First - don't keep currency in a double - use a decimal instead. Every time. Then use "C0" as the format specifier:

decimal numba = 5212.6312M;
string s = numba.ToString("C0");
£冰雨忧蓝° 2024-07-28 07:45:07

这应该可以完成工作:

String.Format("{0:C0}", Convert.ToInt32(numba))

C 后面的数字指定要包含的小数位数。

我怀疑您确实想使用 decimal<然而,用于存储此类数字的 /code>类型。

This should do the job:

String.Format("{0:C0}", Convert.ToInt32(numba))

The number after the C specifies the number of decimal places to include.

I suspect you really want to be using the decimal type for storing such numbers however.

烟沫凡尘 2024-07-28 07:45:07
Console.WriteLine(numba.ToString("C0"));
Console.WriteLine(numba.ToString("C0"));
七颜 2024-07-28 07:45:07
 decimal value = 0.00M;
        value = Convert.ToDecimal(12345.12345);
        Console.WriteLine(".ToString(\"C\") Formates With Currency $ Sign");
        Console.WriteLine(value.ToString("C"));
        //OutPut : $12345.12
        Console.WriteLine(value.ToString("C1"));
        //OutPut : $12345.1
        Console.WriteLine(value.ToString("C2"));
        //OutPut : $12345.12
        Console.WriteLine(value.ToString("C3"));
        //OutPut : $12345.123
        Console.WriteLine(value.ToString("C4"));
        //OutPut : $12345.1235
        Console.WriteLine(value.ToString("C5"));
        //OutPut : $12345.12345
        Console.WriteLine(value.ToString("C6"));
        //OutPut : $12345.123450

单击查看控制台输出屏幕

希望这可以帮助您...

谢谢。 :)

 decimal value = 0.00M;
        value = Convert.ToDecimal(12345.12345);
        Console.WriteLine(".ToString(\"C\") Formates With Currency $ Sign");
        Console.WriteLine(value.ToString("C"));
        //OutPut : $12345.12
        Console.WriteLine(value.ToString("C1"));
        //OutPut : $12345.1
        Console.WriteLine(value.ToString("C2"));
        //OutPut : $12345.12
        Console.WriteLine(value.ToString("C3"));
        //OutPut : $12345.123
        Console.WriteLine(value.ToString("C4"));
        //OutPut : $12345.1235
        Console.WriteLine(value.ToString("C5"));
        //OutPut : $12345.12345
        Console.WriteLine(value.ToString("C6"));
        //OutPut : $12345.123450

click to see Console Out Put screen

Hope this may Help you...

Thanks. :)

删除会话 2024-07-28 07:45:07

我认为实现你的目标的正确方法是这样的:

Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalDigits = 0;

只有这样你才应该进行 Format 调用:

String.Format("{0:C0}", numba) 

I think the right way to achieve your goal is with this:

Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalDigits = 0;

and only then you should do the Format call:

String.Format("{0:C0}", numba) 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文