繁体   English   中英

比较小数到1个小数点?

[英]Compare decimals to 1 decimal point?

我是C#的新手(来自uni的Java / C ++,所以我想并不是真的那么新),但是对于一个项目,我需要比较小数。

例如

a = 1234.123
b = 1234.142

Decimal.Compare()当然会说它们与a小于b是不同的。 我想做的是将它与第一个小数点后一位(1和1)进行比较,以便返回true。

我唯一想到的方法是将其转换为使用Decimal.GetBits()但是我希望有一种我还没有想到的更简单的方法。

您可以将小数点四舍五入到一个小数位数,然后进行比较。

if (Decimal.Round(d1,1) == Decimal.Round(d2,1))
    Console.WriteLine("Close enough.");

而且,如果舍入(默认的中点处理)不是您想要的,则Decimal类型也可以与所有其他选项一起使用,就像我在前面的答案中介绍的那样

您可以使用Math.Truncate(Decimal)MSDN

计算指定十进制数字的整数部分。

编码示例。

Decimal a = 1234.123m;
Decimal b = 1234.142m;

Decimal A = Math.Truncate(a * 10);  
Console.WriteLine(A);// <= Will out 12341
Decimal B = Math.Truncate(b * 10); 
Console.WriteLine(B);// <= Will out 12341

Console.WriteLine(Decimal.Compare(A, B)); // Will out 0 ; A and B are equal. Which means a,b are equal to first decimal place

注意:这是经过测试并发布的。

同样简单的一行比较:

Decimal a = 1234.123m;
Decimal b = 1234.142m;

 if(Decimal.Compare(Math.Truncate(a*10),Math.Truncate(b*10))==0){
      Console.WriteLine("Equal upto first decimal place"); // <= Will out this for a,b
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM