在最近的开发当中碰到了一个问题 用的Vs2008
double a = 10.64;
float b = 10.64f;
我在进行两个值比较的时候 B大于A
但是如果是
double a = 10.32;
float b = 10.32f;
那么就是 A大于B了 可能就是精度的问题他们在各自四舍五入的情况下长度就不一样了。但是程序里面检测的值是一样的。费解
最纠结的莫过于
double aaa =(Convert.ToDouble("877.80") + Convert.ToDouble("-6.32"));
坑爹啊 为什么得出来的是871.4999999 呢?
还有
我有一个存储过程
--@A1 nvarchar(50) output,
--@A2 nvarchar(50) output 这两个都是存储过程返回结果 值都都一样的为11905750
--SELECT @A1=sum(GuoJBTE*ShuL) as A1 FROM Tbl_Apply1
-- SELECT @A2=[gbzj] FROM t_FeiY然后我后台代码
↓↓这个接收的@A1 SY得到的值却是11900600.0 然后ToDouble()里面选中添加监视的值是1.19006e+007
Double SY= Convert.ToDouble(db.GetParameterValue(cmd11, "@A1").ToString())↓↓这个接收的@A2 FP得到的值就是11905750.0 然后ToDouble()里面选中添加监视的值也是11905750.0
Double FP = Convert.ToDouble(db.GetParameterValue(cmd11, "@guobfp").ToString());
虽然说是两个语句检索的值 但是结果是一样的 返回的类型也一样 接收后强转方式也一样 为什么最后的值就不一样了? 很奇怪 费解!!!! 有木有大神 解答一下
double a = 10.64;
float b = 10.64f;
我在进行两个值比较的时候 B大于A
但是如果是
double a = 10.32;
float b = 10.32f;
那么就是 A大于B了 可能就是精度的问题他们在各自四舍五入的情况下长度就不一样了。但是程序里面检测的值是一样的。费解
最纠结的莫过于
double aaa =(Convert.ToDouble("877.80") + Convert.ToDouble("-6.32"));
坑爹啊 为什么得出来的是871.4999999 呢?
还有
我有一个存储过程
--@A1 nvarchar(50) output,
--@A2 nvarchar(50) output 这两个都是存储过程返回结果 值都都一样的为11905750
--SELECT @A1=sum(GuoJBTE*ShuL) as A1 FROM Tbl_Apply1
-- SELECT @A2=[gbzj] FROM t_FeiY然后我后台代码
↓↓这个接收的@A1 SY得到的值却是11900600.0 然后ToDouble()里面选中添加监视的值是1.19006e+007
Double SY= Convert.ToDouble(db.GetParameterValue(cmd11, "@A1").ToString())↓↓这个接收的@A2 FP得到的值就是11905750.0 然后ToDouble()里面选中添加监视的值也是11905750.0
Double FP = Convert.ToDouble(db.GetParameterValue(cmd11, "@guobfp").ToString());
虽然说是两个语句检索的值 但是结果是一样的 返回的类型也一样 接收后强转方式也一样 为什么最后的值就不一样了? 很奇怪 费解!!!! 有木有大神 解答一下
解决方案 »
- VS 再调试代码后 不清除浏览器的缓存总是执行的以前的操作结果
- 用JAVA做网页和asp.net有什么不同,有什么好的方面?
- net中判断某一字符个数的函数
- 没有datetimepick控件怎么输入日期阿?
- dataGRID删除问题。???datagrid分页后删除最后一页的最后一条记录后会出错
- 马上要去面试了,做ASP.net+c#大家指点一下啊!谢谢了
- 请教asp.net页面高手
- 新闻系统用户管理问题?
- asp.net根据查询数据计算,十万火急!!1
- ???为什么我调式ASP.net出错???
- Repeater 如何遍历单元格数据,然后insert 到数据库中?
- 求SWFupload 的高级应用!.NET
主要就是想知道 为什么两个Double 相加一个为负数算出来的值就是871.499999
还有就是得到存储过程值的问题
主要就是想知道 为什么两个Double 相加一个为负数算出来的值就是871.499999
还有就是得到存储过程值的问题
float
精确是不够的,它在小数点后四位的时候会出现与电脑电压跳动有关的数值变动.
这个接收的@A1 SY得到的值却是11905800.0 然后ToDouble()里面选中添加监视的值是一个科学计数法 值貌似是十位进百位了
Double SY= Convert.ToDouble(db.GetParameterValue(cmd11, "@A1").ToString())
程序中 好像Double类型与Float都是近似保存。比如我保存的5 可能就给保存成了4.999999999999 或者是5.000000000001