首页 新闻 会员 周边

c# double不使用toString保留double类型的2位小数,不足补0

0
悬赏园豆:5 [已解决问题] 解决于 2017-10-11 16:43

因为使用NPOI写入Excel,但是如果你写入的是string类型的数字的话,就会出现绿色小三角,导致Excel不能使用公式累加总和,故程序不能使用toString()去处理。

比如 double a=1.200;

我想保留成2位小数,按道理结果是 1.20

比如double b=1.0000 =>1.00

但是使用Math.Round会把0去除掉

我不知道还有没有更好的办法去解决这个,特发此贴,求大神解答!

c#
又是没有bug的一天的主页 又是没有bug的一天 | 初学一级 | 园豆:149
提问于:2017-10-11 13:48
< >
分享
最佳答案
0

题主这不是不懂C#和NPOI,明显是不懂EXCEL的。

收获园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2017-10-11 14:19
其他回答(3)
0

好久没玩C#,确定如果不是string类型,excel能够正常计算?即,如果保存为1.200这个数值,excel能正常计算?

如果能,那么或许可以:

double a = double.Parse(olda.ToString("0.00"));
decimal b = Math.Round(oldb,2);

没运行环境,自己试看...

陈子 | 园豆:241 (菜鸟二级) | 2017-10-11 14:13

如果不是string和double的原因,还是查阅一下excel的相关知识点,可能是excel对数据格式处理方式的问题更大些。比如在导出的时候,对excel的列(或列头)设置为数值类型?

支持(0) 反对(0) 陈子 | 园豆:241 (菜鸟二级) | 2017-10-11 14:35
0

最好的方法就是在程序中算完,然后tostring再填充到excel里

猝不及防 | 园豆:2781 (老鸟四级) | 2017-10-11 16:36
0

直接使用NPOI的DataFormat 然后输入格式0.00即可解决,如果在模板页设置的话,设置cell的cellStyle会把模板设置的单元格格式替换。

又是没有bug的一天 | 园豆:149 (初学一级) | 2017-10-11 16:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册