CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

100分求一个简单问题,分不够再加!在线等,急急急!

楼主yangqi0218(狒狒)2004-12-02 10:47:25 在 .NET技术 / C# 提问

程序如下:  
                    double   fltUnitPrice;  
  double   fltArea;  
  fltUnitPrice   =   float.Parse(txtUnitPrice.Text.ToString());  
  fltArea   =   float.Parse(txtArea.Text.ToString());  
                    fltHouseAmount   =   fltUnitPrice   *   fltArea;  
  其中有两个textBox,一个名为txtUnitPrice,txtArea,输入值后分别赋予到fltUnitPrice和fltArea变量中  
  现在遇到的问题是明明我输入的是3120.3,而程序运行时值变成3120.35?  
  而且fltHouseAmount   =   fltUnitPrice   *   fltArea;  
                                              3120.3             *   120.5     居然会等于   375996.156?请问这是怎么回事啊?谢谢! 问题点数:100、回复次数:10Top

1 楼13880079673(CMonkey)回复于 2004-12-02 10:49:40 得分 10

用decimal   类型代替double就行了,double是近似运算,而decimal   是精确运算Top

2 楼kong19(DayDayUp)回复于 2004-12-02 10:49:40 得分 0

把float改称decimal试试Top

3 楼yangqi0218(狒狒)回复于 2004-12-02 10:51:19 得分 0

打错,程序更正如下:  
  private   float   fltUnitPrice;  
  private   float   fltArea;  
                    private   float   fltHouseAmount;  
                    fltUnitPrice   =   float.Parse(txtUnitPrice.Text.ToString());  
  fltArea   =   float.Parse(txtArea.Text.ToString());  
                    fltHouseAmount   =   fltUnitPrice   *   fltArea;  
  Top

4 楼hanbinghai(海宁)回复于 2004-12-02 10:54:56 得分 50

double   fltUnitPrice;  
  double   fltArea;  
  fltUnitPrice   =   Convert.ToDouble(txtUnitPrice.Text);  
  fltArea   =   Convert.ToDouble(txtArea.Text);  
  double   hai   =   fltUnitPrice   *   fltArea;  
  如果这样是正确的  
  估计是float.Parse用法不对  
  Top

5 楼kong19(DayDayUp)回复于 2004-12-02 10:57:26 得分 30

private   decimal   fltUnitPrice;  
  private   decimal   fltArea;  
  private   decimal   fltHouseAmount;  
  fltUnitPrice   =   decimal   .Parse(txtUnitPrice.Text);  
  fltArea   =   decimal   .Parse(txtArea);  
  fltHouseAmount   =   fltUnitPrice   *   fltArea;  
  Top

6 楼taly1111(taly)回复于 2004-12-02 11:04:41 得分 10

用decimal吧,挺好,也够用了  
  实在不行就double  
  或者自己定义一下float的格式Top

7 楼hanbinghai(海宁)回复于 2004-12-02 11:06:27 得分 0

有意思,fltUnitPrice   =   float.Parse(txtUnitPrice.Text.ToString());  
  fltArea   =   float.Parse(txtArea.Text.ToString());  
  没有问题  
  fltUnitPrice   *   fltArea  
  相乘的结果不是想要的结果  
   
  等待原因  
  Top

8 楼yangqi0218(狒狒)回复于 2004-12-02 11:07:57 得分 0

谢谢各位,问题解决了!谢谢!Top

9 楼kong19(DayDayUp)回复于 2004-12-02 11:10:12 得分 0

浮点数据类型float和double保存的是近似值,准确值要使用decimalTop

10 楼xiaojhun(xiao)回复于 2004-12-02 11:19:45 得分 0

float.Parse语句普遍应用在把INT等数值类型的转换,注意这条语句“txtUnitPrice.Text.ToString()”,他是字符型Top

相关问题

  • Access+SQL+ADO(400分!!!!!)求助!!不够再给!!!急急急急急急急急急
  • ●●●●●●●●●●急急急急急急急急急急急急●●●●●●●●●●UP有分,分不够可再加
  • 高分请教两个问题,不够再加,急急急急急急!!!!!!!
  • 急急急急急急急急急急急如何从数组中依次取出数据分不够我再加!!!!!
  • 求助 散分100 急 急急急急急急急急急
  • 高分求ASP用户密码如何加密?急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!急!
  • 急急急急急急!!!!!!!!!高分求助!!!!!!!!!
  • 急急急急急急急急急...在线等...解决放分
  • 急!急!急!请教各位高手~~~~~~~~~~~!!!(分不够可再加)
  • 急急急,分不够可以再加!DoModal()函数出错!

关键词

  • fltunitprice
  • fltarea
  • flthouseamount
  • txtunitprice
  • txtarea
  • decimal
  • parse
  • float
  • double
  • 程序

得分解答快速导航

  • 帖主:yangqi0218
  • 13880079673
  • hanbinghai
  • kong19
  • taly1111

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo