A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 佟嘉豪 中级黑马   /  2013-11-3 00:27  /  2055 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 佟嘉豪 于 2013-11-3 20:45 编辑

输入一个数字,如果是小数,则取后两位,并4舍5入
如果是整数,则不需要改动

评分

参与人数 1技术分 +1 收起 理由
陈福军 + 1

查看全部评分

10 个回复

倒序浏览
何俞平 发表于 2013-11-3 00:40
//不考虑输入的不是数字的情况。  
          double number=0;                         //用于接 ...

不会4舍5入
回复 使用道具 举报
本帖最后由 何俞平 于 2013-11-3 00:56 编辑

       //不考虑输入的不是数字的情况。  
          double number=0;                         //用于接收小数
            string input = Console.ReadLine();

            try
            {
                Console.WriteLine(Convert.ToInt32(input));       //输出整数
            }
            catch                 //转换整数失败
            {
                number = Convert.ToDouble(input);
                //将double类型转换成字符串,"0.00"代表两位小数,“0.0”代表一位小数。
                string str = number.ToString("0.00");
                //再将字符串串转换成数字
                number = Convert.ToDouble(str);
                Console.WriteLine(number);
            }
            Console.ReadKey();
回复 使用道具 举报
这样不会4舍5入
回复 使用道具 举报
  1. public static void Main()
  2. {
  3.         float x = 4.569123f;
  4.         //判断X是否为整数
  5.         if(x - Convert.ToInt32(x) != 0)
  6.         {
  7.                 //通过在ToString方法添加参数,设置转换后的字符串的格式
  8.                 Console.WriteLine(x.ToString("0.00"));
  9.                 //通过Math提供的数学方法直接进行四舍五入
  10.                 Console.WriteLine(Math.Round(x, 2));
  11.         }
  12.         else
  13.         {
  14.                 Console.WriteLine(x);
  15.         }
  16. }
复制代码
大晚上的看到了好多新问题, 满满的都是拿技术分的机会啊{:soso_e154:}

评分

参与人数 1技术分 +2 收起 理由
陈行 + 2 很给力!

查看全部评分

回复 使用道具 举报
比较笨,但是应该可行的方法。说下思路好了,代码很简单的
给定的的是float类型的num0,把num0强转成int类型num1。判断num0-num1和0.5的大小关系就可以了。大于等于就把num1+1当结果,小于就把num1当结果
回复 使用道具 举报
C#中采用的是"四舍五入六成双"
  1. <font size="3">Console.WriteLine(Math.Round(1.73, 1));// 运行结果1.7
  2.             Console.WriteLine(Math.Round(1.76, 1));// 运行结果1.8
  3.             Console.WriteLine(Math.Round(1.75, 1));// 运行结果1.8
  4.             Console.WriteLine(Math.Round(1.65, 1));// 运行结果1.6</font>
复制代码

在网上查了一些方法并验证了一下发现,有很多都实现不了四舍五入的功能,
不过还好找到了一个比较好的方法说明如下
  1. <font size="3">double Num = 1.765565;
  2.             string mNum = (Math.Truncate(Num * 1000000) / 1000000.0f).ToString("0.00000");
  3.             Console.WriteLine(mNum);</font>
复制代码

说明:这里Num是你要转换的双精度浮点数,Num乘以一个整数(10000...)有几个小数位就加几个0,
后面再除以一个和前面一样的数不过是小数形式,ToString()中的参数小数位就是你要四舍五入的位数。
测试结果截图如下:

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
亲 有现成的哦  你试试这个方法Math.Round() 用这个MidpointRounding重载指定中间值 祝你好运
回复 使用道具 举报
  1. static void Main(string[] args)
  2.         {
  3.             Console.WriteLine("输入一个整数:");
  4.             string num = Console.ReadLine();
  5.             int iNum;
  6.             double dNum;

  7.             if (int.TryParse(num, out iNum))
  8.             {
  9.                 Console.WriteLine("整数:" + iNum);
  10.             }
  11.             else if (double.TryParse(num, out dNum))
  12.             {
  13.                 Console.WriteLine("小数,四舍五入后:" + Math.Round(dNum, 2));
  14.             }
  15.             else
  16.             {
  17.                 Console.WriteLine("非数字。");
  18.             }

  19.             Console.ReadKey();
  20.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
陈行 + 1

查看全部评分

回复 使用道具 举报
楼主  问题解决了就把问题设置已解决啊  那样可以拿分哦~
回复 使用道具 举报
我在VS上试过可以的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马