我想知道如何将变量四舍五入到小数点后两位。在下面的例子中,奖金通常是一个带有四位小数的数字。有没有办法确保支付变量始终四舍五入到小数点后两位?
pay = 200 + bonus;
Console.WriteLine(pay);
我想知道如何将变量四舍五入到小数点后两位。在下面的例子中,奖金通常是一个带有四位小数的数字。有没有办法确保支付变量始终四舍五入到小数点后两位?
pay = 200 + bonus;
Console.WriteLine(pay);
使用Math.Round函数并指定小数位数。
Math.Round(pay,2);
将 双精度浮点数 的值舍入到指定的小数位数。
或者 Math.Round 方法 (Decimal, Int32)
将十进制值舍入到指定的小数位数。
float
、double
或decimal
类型,否则这将永远无法正常工作。 - Aidiakapipay = Math.Round(pay, 2);
。 - Habib您应该使用一种形式的Math.Round
。请注意,如果未指定MidpointRounding
值,Math.Round
默认使用银行家舍入(向最近的偶数舍入)。如果您不想使用银行家舍入,则应使用Math.Round(decimal d, int decimals, MidpointRounding mode)
,如下所示:
Math.Round(pay, 2, MidpointRounding.AwayFromZero); // .005 rounds up to 0.01
Math.Round(pay, 2, MidpointRounding.ToEven); // .005 rounds to nearest even (0.00)
Math.Round(pay, 2); // Defaults to MidpointRounding.ToEven
decimal pay = 1.994444M;
Math.Round(pay , 2);
string.Format
将精度设置为如下内容:decimal pay = 200.5555m;
pay = Math.Round(pay + bonus, 2);
string payAsString = string.Format("{0:0.00}", pay);
pay
变量!当你已经使用了 Math.Round
函数,或许就没必要再用字符串格式化了吧?如果你不想舍入实际数字而只是想缩短生成的字符串,那么字符串格式化是个好东西。在这种情况下,也可以考虑使用 "F"
或 "F2"
(以及 "N"
和 "N2"
)格式化字符串,例如 string.Format("{0:N}", pay)
或等价的 pay.ToString("N")
。 - Jeppe Stig Nielsen{0:N}
,可能是习惯使然吧 ;o) - Paul Aldred-Bann"F"
会按照当前线程的当前文化的NumberFormat
指定的小数位数进行四舍五入。通常情况下是两位小数。"F2"
总是保留两位小数。"N"
和"N2"
类似,但它们还会根据文化插入组分隔符。例如(11223344.5566m).ToString("N")
在某些文化中可能会产生格式化数字"11,223,344.56"
。请参阅标准数字格式字符串。 - Jeppe Stig Nielsen请确保提供一个数字,通常使用双精度数。Math.Round可以有1-3个参数,第一个参数是您想要舍入的变量,第二个是小数位数,第三个是舍入类型。
double pay = 200 + bonus;
double pay = Math.Round(pay);
// Rounds to nearest even number, rounding 0.5 will round "down" to zero because zero is even
double pay = Math.Round(pay, 2, MidpointRounding.ToEven);
// Rounds up to nearest number
double pay = Math.Round(pay, 2, MidpointRounding.AwayFromZero);
Round
函数会进行四舍五入。float a = 12.345f;
Math.Round(a,2);
//result:12,35, and NOT 12.34 !
int aInt = (int)(a*100);
float aFloat= aInt /100.0f;
//result:12,34
var pay = 200 + bonus;
pay = System.Math.Round(pay, 2);
Console.WriteLine(pay);
MSDN参考文献:
Console.WriteLine(decimal.Round(pay,2));