如何最好地在 C# 中对小数进行四舍五入
我的十进制值为 18.8。存储在此变量中的值可以是任何类型。例如,它可以是 1.0000000 或 1.00004000 或 5.00000008。 我想编写一个方法,以便我可以将小数传递给它并四舍五入字符串。如果我知道我想要得到的小数位,这就不成问题了。但我想得到的是:
当它是 1.0000000 时,它应该返回 1。
如果是 1.00004000,则应返回 1.00004。
当它是 5.00000008 时,它应该返回 5.00000008。 所以基本上它应该找到最后一位数字后面不同于 0 的所有 0 并将其切断。
我应该如何处理它?最好的方法是什么?我从 SQL 中获取这个值并将其放入十进制变量中,但随后我想显示它,并且当它可以显示为 5 时拥有 5.0000000 对我来说有点过大了。
希望我能得到一些好的建议。
I've decimal value 18.8. Values that are stored in this variable can be of any kind. For example it can be 1.0000000 or 1.00004000 or 5.00000008.
I would like to write a method so that I can pass decimal to it and get rounded up string. This wouldn't be a problem if I would know decimal places I would like to get. But what I would like to get is:
When it's 1.0000000 it should return 1.
If it's 1.00004000 it should return 1.00004.
When it's 5.00000008 it should return 5.00000008.
So basically it should find all 0 that are behind last digit different then 0 and cut it off.
How should I approach it? What's the best method? I'm getting this value from SQL and put it in decimal variable but then i would like to display it and having 5.0000000 when it could be displayed as 5 is a bit overkill for me.
Hope I could get some nice suggestions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
AFAIK,ToString( "0.##" ) 就可以了,只需增加 # 的数量,这样你的值就不会向上舍入。例如:
这将生成“1,999”字符串(分隔符取决于所使用的区域性)。
因此,您可以使用常见的非常长的格式化字符串:
"0.##############################" - 格式化所有值。
AFAIK, ToString( "0.##" ) will do, just increase number of # so that your value won't round up. E.g.:
This will generate "1,999" string (delimiter depends upon used culture).
As a result, you can use common very long formatting string:
"0.############################"
- to format all your values.因此,从末尾修剪掉零。
So trim the zeroes from the end.
您还可以使用 string.Format 和 这里是不同可能格式的文档,但我喜欢 Johan Sheehans 备忘单更多作为快速参考。
You can also use string.Format and here's the documentation of the different possible formats but I like Johan Sheehans cheat sheet more as a quick reference.
看看 Jon Skeets 的文章: http://www.yoda.arachsys.com/ csharp/floatingpoint.html
Take a look at Jon Skeets article: http://www.yoda.arachsys.com/csharp/floatingpoint.html