永发信息网

C#如何将float类型数值保留两位小数?

答案:3  悬赏:70  手机版
解决时间 2021-03-12 00:02
float a=Convert.ToSingle(txtNum.Text);
如果txtNum.Text输入0.32 转化后输出的结果为:0.31999999284744263
如何才能想要的数值0.32呢?感谢各位大大。
最佳答案
程序例程如下:

double x = 6.50000000000;
float y = float.Parse(x.ToString());
Console.WriteLine(y.ToString("F2"));

以上程序将x值赋给y,y保留两位小数。
全部回答
1、float y =8.60000000000000000; string s = y.tostring("f2"); 2、%.2f是保留两位小数 %.3f是保留三位小数 3、c#里面有个math.round()函数,math.round(a,2)就是保留2位小数
你要知道,float是浮点数,无法精确表示一个数值。所以你根本不可能在float内部精确表示一些小数,比如0.7或者你说的0.32。 有兴趣的话可以研究下IEEE754标准,这个标准规定了电脑中浮点数如何存储,看完了你就会明白,这些小数在电脑中保存的时候都是转换成二进制保存的,而0.32和0.7这种小数,在十进制下是有限小数,但转换成二进制之后就是无限循环小数了,所以是无法精确用float表示的。你只能在float内部保存一个很接近的近似值。 在代码中也不应该写:if (a == 0.7) 这种语句,因为浮点数a是无法精确表示0.7的,应该写成: if (Math.abs(a - 0.7) < xxx) 其中xxx是一个足够小的数。 当然你在输出的时候是可以将这个float a输出成两位小数的,比如a.toString("F2");这样输出的时候会将a的值十进制小数点后2位之后进行四舍五入然后输出,但是a本身的值仍然是无法保证精确只有两位小数的。 ------------- 补充:我知道你是要从string转float,不过原因我已经说了,这是float内部存储方式的问题,不是转换的问题,浮点数本来就无法精确存储一些小数,这个是没办法的。这也就是为什么许多涉及到金融业务的程序都采用的是定点数来保存金额等数字,而不是采用浮点数的原因。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
i'd love to这个句子'd是代表什么
唐禹哲在甜蜜再恋里演什么啊?求大神帮助
photoshop怎么制作像闪光点那样的图
心落痛了,累也干了。这是哪首歌的歌词
头孢是消炎药吗
伤口上擦紫水有疤吗????
世界会变得很美的歌词有谁知道?
日本为什么没有像蒙古和满清那样统一中国
(2013)质量为m,半径为R的均质圆轮,绕垂直于
美华布艺在什么地方啊,我要过去处理事情
豆腐渣饺子的做法大全
我做美甲刷上甲油胶挺亮 一上封尘烤干擦掉封
某人沿电车线路匀速行走,每12分钟有一辆电车
如果人类开始都不结婚,都不生育,最后人类会
男朋友经常的骗我,他是不是把我当成了傻子?
推荐资讯
嘉麟豪庭怎么样?好不好?值不值得买?
生之前的阵痛是怎么个痛法
我的电脑被别人设了管理员密码,应该怎么才能
一个框里面一个若念什么
你说的话好牵强啊!!!这里的牵强日语怎么说
老滋味滕州菜煎饼(冠县店)怎么去啊,有知道地
乐至县交警大队在哪里啊,我有事要去这个地方
我时空猎人也被150多级80多万战斗力能卖多少
下列哪项不是崩漏的主证:A.月经周期紊乱B.色
有没有西方奇幻玄幻打怪升级的书?主角很多奇
垃圾处理厂都有什么功能?
毛条生活区在什么地方啊,我要过去处理事情
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?