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

wang1234587 2013-12-09 09:46:03
一个简单的运算在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#不能处理数据精度要求稍高一点的问题吧,跪求大神解决
...全文
388 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qldsrx 2013-12-10
  • 打赏
  • 举报
回复
decimal hu = (18 + 2 / 60 + 32.6m / 3600)* 3.1415m / 180;
decimal jiaodu = hu * 180 / 3.1415m;
bigbaldy 2013-12-10
  • 打赏
  • 举报
回复
引用 3 楼 hwenycocodq520 的回复:
红色部分是按int计算了,等于0 (18 + 2 / 60 + 32.6 / 3600)* 3.1415 / 180; 加上小数点用于浮点运算,精度会提高点 (18 + 2.0 / 60 + 32.6 / 3600) * 3.1415 / 180;
一语点破了
卧_槽 2013-12-10
  • 打赏
  • 举报
回复
把你代码里面所有数字后面都加个d
智商余额不足 2013-12-09
  • 打赏
  • 举报
回复
红色部分是按int计算了,等于0 (18 + 2 / 60 + 32.6 / 3600)* 3.1415 / 180; 加上小数点用于浮点运算,精度会提高点 (18 + 2.0 / 60 + 32.6 / 3600) * 3.1415 / 180;
wang1234587 2013-12-09
  • 打赏
  • 举报
回复
引用 1 楼 pig357 的回复:
在数字后面加m就可以了啊,3.13m
你写下代码 我看
pig357 2013-12-09
  • 打赏
  • 举报
回复
在数字后面加m就可以了啊,3.13m

110,552

社区成员

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

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

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