我想用数学来做。圆的函数
当前回答
有一个奇怪的情况,我有一个十进制变量,当序列化55.50时,它总是设置数学默认值为55.5。但是,由于某些原因,我们的客户端系统期望的是55.50,他们肯定期望的是十进制。这就是当我写下面的帮助,它总是转换任何十进制值填充到2位零,而不是发送一个字符串。
public static class DecimalExtensions
{
public static decimal WithTwoDecimalPoints(this decimal val)
{
return decimal.Parse(val.ToString("0.00"));
}
}
用法应该是
var sampleDecimalValueV1 = 2.5m;
Console.WriteLine(sampleDecimalValueV1.WithTwoDecimalPoints());
decimal sampleDecimalValueV1 = 2;
Console.WriteLine(sampleDecimalValueV1.WithTwoDecimalPoints());
输出:
2.50
2.00
其他回答
//转换到小数点后两位
String.Format("{0:0.00}", 140.6767554); // "140.67"
String.Format("{0:0.00}", 140.1); // "140.10"
String.Format("{0:0.00}", 140); // "140.00"
Double d = 140.6767554;
Double dc = Math.Round((Double)d, 2); // 140.67
decimal d = 140.6767554M;
decimal dc = Math.Round(d, 2); // 140.67
= = = = = = = = =
// just two decimal places
String.Format("{0:0.##}", 123.4567); // "123.46"
String.Format("{0:0.##}", 123.4); // "123.4"
String.Format("{0:0.##}", 123.0); // "123"
也可以将“0”和“#”组合。
String.Format("{0:0.0#}", 123.4567) // "123.46"
String.Format("{0:0.0#}", 123.4) // "123.4"
String.Format("{0:0.0#}", 123.0) // "123.0"
下面是一些例子:
decimal a = 1.994444M;
Math.Round(a, 2); //returns 1.99
decimal b = 1.995555M;
Math.Round(b, 2); //returns 2.00
你可能还想看看银行家的四舍五入/四舍五入到偶数与以下过载:
Math.Round(a, 2, MidpointRounding.ToEven);
这里有更多的信息。
你可能需要检查的一件事是数学的舍入机制。轮:
http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx
除此之外,我推荐数学。Round(inputnumber, numberOfPlaces)接近*100/100,因为它更干净。
您应该能够使用Math指定要舍入的位数。轮(YourNumber, 2)
你可以在这里阅读更多。
维基百科上有一个很好的四舍五入页面。
所有。net(托管)语言都可以使用任何公共语言运行时(CLR)舍入机制。例如,Math.Round()(如上所述)方法允许开发人员指定舍入的类型(舍入到偶数或远离零)。Convert.ToInt32()方法及其变体使用舍入到偶数。Ceiling()和Floor()方法是相关的。
您也可以使用自定义数字格式舍入。
注意Decimal.Round()使用了与Math.Round()不同的方法;
这是一篇关于银行家舍入算法的有用文章。 请看Raymond关于舍入的幽默帖子…
推荐文章
- 实体框架核心:在上一个操作完成之前,在此上下文中开始的第二个操作
- 如何为构造函数定制Visual Studio的私有字段生成快捷方式?
- 如何使用JSON确保字符串是有效的JSON。网
- AppSettings从.config文件中获取值
- 通过HttpClient向REST API发布一个空体
- 如何检查IEnumerable是否为空或空?
- 自动化invokerrequired代码模式
- 在c#代码中设置WPF文本框的背景颜色
- 在c#中,什么是单子?
- c#和Java中的泛型有什么不同?和模板在c++ ?
- 如何舍入一个双到最近的Int在迅速?
- c#线程安全快速(est)计数器
- 如何将此foreach代码转换为Parallel.ForEach?
- 如何分裂()一个分隔字符串到一个列表<字符串>
- 如何转换列表<字符串>列表<int>?