当前位置:编程学习 > C#/ASP.NET >>

C#处理数据精度太低的问题,怎么解决

一个简单的运算在C#里,代码如下
 
double hu = (18 + 2 / 60 + 32.6 / 3600)* 3.1415 / 180;
double jiaodu = hu * 180 / 3.1415;

他所得到  hu=0.31431730925734569,然而正确结果应该是0.314899091036353(这是我用matlab算的,跟计算器上的一样),可以看出,从小数点后第四位已经不对了,这远小于我要的精度;

有人说用decimal不就好了,可是我所要编写的程序里面涉及很多的运算,由于C#默认的运算结果是double,我总不能只要涉及到运算就强制转换成decimal吧??
有没有办法让C#默认运算按decimal来进行?
有没有什么办法解决这个精度太低的问题,总不会C#不能处理数据精度要求稍高一点的问题吧,跪求大神解决 --------------------编程问答-------------------- 在数字后面加m就可以了啊,3.13m --------------------编程问答--------------------
引用 1 楼 pig357 的回复:
在数字后面加m就可以了啊,3.13m


你写下代码 我看 --------------------编程问答-------------------- 红色部分是按int计算了,等于0
(18 + 2 / 60 + 32.6 / 3600)* 3.1415 / 180;

加上小数点用于浮点运算,精度会提高点
(18 + 2.0 / 60 + 32.6 / 3600) * 3.1415 / 180; --------------------编程问答--------------------
引用 3 楼 hwenycocodq520 的回复:
红色部分是按int计算了,等于0
(18 + 2 / 60 + 32.6 / 3600)* 3.1415 / 180;

加上小数点用于浮点运算,精度会提高点
(18 + 2.0 / 60 + 32.6 / 3600) * 3.1415 / 180;


一语点破了 --------------------编程问答--------------------
decimal hu = (18 + 2 / 60 + 32.6m / 3600)* 3.1415m / 180;
decimal jiaodu = hu * 180 / 3.1415m;
--------------------编程问答-------------------- 除 --------------------编程问答-------------------- 把你代码里面所有数字后面都加个d
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,