弱弱的问下float 怎么准确转换到double

diegod 2012-12-05 05:30:08
float x=1.23;
double a= Convert.ToDouble(x);
MessageBox(a.ToString());
后面多了很多小数
...全文
507 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly3854264 2012-12-06
  • 打赏
  • 举报
回复
各种问题啊,能直接转换嘛?
我就是很懒 2012-12-06
  • 打赏
  • 举报
回复
float x=1.23; double a= Convert.ToDouble(x); MessageBox(a.ToString("f2")); 保留2位小数
  • 打赏
  • 举报
回复
1、float x=1.23;你这样不能编译通过要在后面加f 2\从float到double的转换是宽转换,所以可以直接 float x = 1.23F; double z = x; Console.WriteLine(z.ToString("f2")); 3、值保存的格式与显示是两回事,所以f2让它显示两位小数
足球中国 2012-12-05
  • 打赏
  • 举报
回复
float的前七位是正确的。取前七位就可以了。
threenewbee 2012-12-05
  • 打赏
  • 举报
回复
用Math.Round将无效的尾数四舍五入下。
furydc620 2012-12-05
  • 打赏
  • 举报
回复
我试着回答一下: 1、错误提示? double是64为双精度,隐式转换为32位的float会造成精度丢失,所以当然不能转换,除开你用一些关键字(好像是checked)标识下,而c#默认1.23为double型,所以会有错误提示,你加个f标识为float即可; 2、多了很多小数位? 因为无论double还是float,都是ieee754标准的浮点数,1.23这种小数是无法精确表示的,因此32位float的1.23转为64位的double时,结果也会出现很小的误差,至于会是多少,可以使用浮点数和ieee754表示法工具去自己测试一下。
diegod 2012-12-05
  • 打赏
  • 举报
回复
这也太狗血了。。效率啊
你的选择H 2012-12-05
  • 打赏
  • 举报
回复

            float x = 1.23f;
            double a = double.Parse(x.ToString());
            Console.WriteLine(a.ToString());
diegod 2012-12-05
  • 打赏
  • 举报
回复
这。。,,,,,,
Hauk 2012-12-05
  • 打赏
  • 举报
回复
float x = 1.23f; decimal a = Convert.ToDecimal(x) ; double d = Convert.ToDouble(a); MessageBox.Show(d.ToString()); 用decimal

111,092

社区成员

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

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

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