草庐IT

C# 如何在不四舍五入的情况下将 double 格式化为小数点后一位

我需要将double值格式化为小数点后一位而不四舍五入。doublevalue=3.984568438706stringresult="";我试过的是:1)result=value.ToString("##.##",System.Globalization.CultureInfo.InvariantCulture)+"%";//returns3.98%2)result=value.ToString("##.#",System.Globalization.CultureInfo.InvariantCulture)+"%";//returns4%3)result=value.ToStrin

c# - 对于小数来说,值太大或太小

我有以下代码:doubleshortfall=GetSomeNumber();//3.3588548831176006E+29if(shortfall>0){returnValue=Convert.ToDecimal(shortfall);}这会产生上述错误。 最佳答案 好吧,这是不言自明的。decimal.MaxValue是79,228,162,514,264,337,593,543,950,335-你的数字比这个大。尽管decimal比double精度更高,但double的范围更大-它可以处理非常非常大和非常非常大小数字。现在,

c# - 小数乘以整数可以吗?

我是C#和.NET的新手,所以如果这个问题太简单,我深表歉意。我有一个十进制变量decVar。我需要将它与整数变量intVar相乘。我需要结果为decimal。那么我应该将整数变量声明为int还是decimal?有了这段代码,decimaldecVar=0.1m;decimaldecRes=decVar*intVar;我应该这样声明吗:intintVar=3;或者像这样:decimalintVar=3;?这是一个财务计算,所以我需要的结果正好是0.3。upd:代码已更新(感谢Jon) 最佳答案 没关系-int无论如何都会被转换为de

c# - 在 C# 中四舍五入到小数点后两位

我有一个十进制数,可以如下所示:189.182我想将这个向上四舍五入到小数点后两位,所以输出如下:189.19Math类中是否有针对此的内置功能,或者其他?我知道上限函数存在,但这似乎并没有达到我想要的效果-它会四舍五入到最接近的整数,所以在这种情况下只是“189”。 最佳答案 乘以100,调用上限,除以100做我认为你要求的publicstaticdoubleRoundUp(doubleinput,intplaces){doublemultiplier=Math.Pow(10,Convert.ToDouble(places));r

c# - 将小数提高到小数的幂?

.net框架在Math类中提供了一种为double供电的方法。但是根据精度要求,我需要将小数提高到小数幂[Pow(decimala,decimalb)]。框架有这样的功能吗?有谁知道有这种功能的库吗? 最佳答案 为了解决我的问题,我找到了一些expansionseries,我让它们实现来求解方程X^n=e^(n*lnx)。//AdjustthistomodifytheprecisionpublicconstintITERATIONS=27;//powerseriespublicstaticdecimalDecimalExp(deci

c# - 如何使用 EntityFramework 4.1 CodeFirst 防止小数值在保存时被截断为 2 个位置?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:EntityFrameworkCodeFirst:decimalprecision我在EntityFramework4.1CodeFirst系统中使用Linq-to-Entities。我的所有decimal属性在保存时都被截断为两位小数。我可以检查正在修改的对象,并可以在调试器中看到它具有正确的小数位数,我可以对数据库中的值进行硬编码以表明它可以接受正确的小数位数[在这种情况下,十进制(4,3)]。但是当我保存该值时,它永远不会正确保存它,而是将decimal值截断为两位小数。我无法在System.Compo

c# - C#小数四舍五入不一致吗?

我一直在与来自SQLDecimal(38,30)的C#中的小数精度作斗争,我终于一直做到了四舍五入。我知道我可能忽略了这里显而易见的东西,但我需要一点洞察力。我遇到的问题是C#没有产生我认为是一致的输出。decimala=0.387518769125m;decimalb=0.3875187691250002636113061835m;Console.WriteLine(Math.Round(a,11));Console.WriteLine(Math.Round(b,11));Console.WriteLine(Math.Round(a,11)==Math.Round(b,11));产量

c# - 将 double 格式化为两位小数

我一直在努力使打印出来的答案精确到小数点后两位。所有涉及的数学都必须保持两位小数的格式。我已经尝试了一些事情,但我不确定要改变什么才能使这项工作成功。doublepdt1=239.99;doublepdt1Total;doublepdt2=129.75;doublepdt2Total;doublepdt3=99.95;doublepdt3Total;doublepdt4=350.89;doublepdt4Total;doublewage=200;doublepercentage=9;doubletotal;doubleanswer;doublei=100;doublea;doubleb

c# - 在 C# 中将小数转换为 double 会产生差异

问题总结:对于一些十进制值,当我们将类型从decimal转换为double时,会在结果中添加一个小分数。更糟糕的是,可能有两个“相等”的十进制值在转换时会产生不同的double值。代码示例:decimaldcm=8224055000.0000000000m;//dcm=8224055000doubledbl=Convert.ToDouble(dcm);//dbl=8224055000.000001decimaldcm2=Convert.ToDecimal(dbl);//dcm2=8224055000doubledbl2=Convert.ToDouble(dcm2);//dbl2=822

c# - 将 double 限制为小数点后 3 位

这是我想要实现的目标:如果double的小数位超过3位,我想截断第三位以外的所有小数位。(不要四舍五入。)Eg.:12.878999->12.878如果double少于3位小数,则保持不变Eg.:125->12589.24->89.24我遇到了这个命令:doubleexample=12.34567;doubleoutput=Math.Round(example,3);但是我不想圆。根据上面发布的命令,12.34567->12.346我想截断该值,使其变为:12.345 最佳答案 double没有小数位-它们不是基于小数位开头的。您可