求一个四舍五入+保留一位小数的算法

长腿爸爸 2010-12-02 01:49:08
问题,如题;

例:

6.66666666666 → 6.7

6.55555555555 → 6.6

6.44444444444 → 6.4


...全文
295 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqluck 2010-12-02
  • 打赏
  • 举报
回复
/// <summary>
/// 四舍五入
/// </summary>
/// <param name="nuber">要进行四舍五的数</param>
/// <param name="point">要保留的小数位数</param>
/// <returns></returns>
public static double Round(double nuber, int point)
{
double tem = Math.Pow(10, point);
double ret = nuber * tem;
double min = Math.Floor(ret);
if (ret >= min + 0.5)
{
//大于五入
ret = min + 1;
}
else
{
//小于五舍
ret = min;
}
return ret / tem;
}
flyerwing 2010-12-02
  • 打赏
  • 举报
回复
math.round()
用这个
phil999 2010-12-02
  • 打赏
  • 举报
回复
ToString("N1")
长腿爸爸 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 changling_wang 的回复:]
Math.Round(6.66666666666,1) 不可以吗?
[/Quote]

方法不错,谢谢
jfoajfjoef 2010-12-02
  • 打赏
  • 举报
回复

double d=6.66666666666 ;
d=d*10;
float i=(int)d;
i=i/10;
思路是乘以10左移小数点一位,之后利用(int)强制转换切点多余的小数部分,最后再除以10把结果赋给一个float型。
兔子-顾问 2010-12-02
  • 打赏
  • 举报
回复
Console.WriteLine(Math.Round(6.66666666666, 1, MidpointRounding.AwayFromZero).ToString());
Console.WriteLine(6.66666666666.ToString("f1"));
Console.WriteLine(Math.Round(6.55555555555, 1, MidpointRounding.AwayFromZero).ToString());
Console.WriteLine(6.55555555555.ToString("f1"));
Console.WriteLine(Math.Round(6.44444444444, 1, MidpointRounding.AwayFromZero).ToString());
Console.WriteLine(6.44444444444.ToString("f1"));
Return门徒 2010-12-02
  • 打赏
  • 举报
回复
Math.Round(6.66666666666,1) 不可以吗?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧