Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
826 views
in Technique[技术] by (71.8m points)

.net - prevent rounding of decimals when using currency string format

I have some decimal data coming from an external service. I need to format the data to 2 decimal places as it is represents money, but if I use the standard C format, I rounds the number:

var x = 42.999m;

var y = string.Format("{0:C}", x);

This results in y containing £43.00. How can I have it round down to £42.99?

(Note that this question is not the same)

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If you want to use a non-default rounding strategy, you'd need to do something like:

var x = 42.999m;

var y = string.Format("{0:C}", Math.Floor(x * 100) / 100);

Math.Floor rounds down; however it doesn't take a number of decimal places, so you have to force the 2 decimal place behaviour.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...