草庐IT

im2double

全部标签

c# - C# 有无符号 double 吗?

我需要使用unsigneddouble但事实证明C#不提供这种类型。有人知道为什么吗? 最佳答案 正如AndersForsgren所指出的,IEEE规范中没有无符号double(因此C#中也没有)。调用Math.Abs()总是可以得到正值你可以将一个double包装在一个结构中并在那里强制执行约束:publicstructPositiveDouble{privatedouble_value;publicPositiveDouble(){}publicPositiveDouble(doubleval){//ortruncate/tak

c# - 根据给定的精度评估两个 double 是否相等,而不是在某个固定的公差范围内

我正在运行NUnit测试来评估一些已知的测试数据和计算结果。这些数字是浮点double,所以我不希望它们完全相等,但我不确定如何在给定精度下将它们视为相等。在NUnit中,我们可以与固定公差进行比较:doubleexpected=0.389842845321551d;doubleactual=0.38984284532155145d;//reallycomesfromadataimportExpect(actual,EqualTo(expected).Within(0.000000000000001));这对于小于零的数字来说效果很好,但随着数字的增长,公差确实需要改变,所以我们总是关

c# - 在 C# 中舍入 double 值

我想要在C#中对double值进行舍入的方法。它需要能够将double值舍入为任何舍入精度值。我手头的代码如下:publicstaticdoubleRoundI(doublenumber,doubleroundingInterval){if(roundingInterval==0.0){return;}doubleintv=Math.Abs(roundingInterval);doublesign=Math.Sign(number);doubleval=Math.Abs(number);doublevalIntvRatio=val/intv;doublek=Math.Floor(val

c# - 如何使用适当的 cultureinfo 将字符串转换为 double

我在数据库中有两个nvarchar字段来存储DataType和DefaultValue,我有一个DataTypeDouble和英文格式的值为65.89875。现在我希望用户根据所选的浏览器语言格式查看值(英语中的65.89875应显示为德语中的65,89875)。现在,如果用户从德语格式编辑为65,89875,相当于英语中的65.89875,而其他用户从英语浏览器中查看,则为6589875。发生这种情况是因为在数据库中它在nvarchar列中存储为65,89875并且当使用英语文化转换时它变为6589875因为它将,视为分隔符,它是德语的小数运算符.我如何让它适用于所有浏览器?

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# - 为什么不在 System.Double 和 System.Long 上使用 volatile?

像我这样的问题是asked,但我的有点不同。问题是,“为什么C#中的System.Double和System.Int64等类型不允许使用volatile关键字?”乍一看,我回答了我的同事,“嗯,在32位机器上,这些类型至少需要两次滴答才能进入处理器,而.Net框架有意抽象出特定于处理器的细节像那样。”他对此回应说:“如果它因为特定于处理器的问题而阻止您使用某项功能,那么它就不是抽象任何东西!”他暗示处理器特定的细节不应该显示给使用框架的人,该框架从程序员那里“抽象”了这样的细节。因此,框架(或C#)应该抽象出那些并做它需要做的事情来为System.Double等(无论是信号量、内存屏障

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没有小数位-它们不是基于小数位开头的。您可

c# - 如何插入千位分隔符(逗号)并转换为 double

我正在尝试格式化文本框的内容:this.lblSearchResults1.Text=Convert.ToDouble(lblSearchResults1.Text).ToString();我如何修改它以便文本包含逗号/千位分隔符?即1,000而不是1000。 最佳答案 查看standardnumericformatstrings:您可以最轻松地使用“N”,它会根据用户文化做正确的事情,因此在您的情况下,您只需将“N”作为参数添加到ToString([double]12345.67).ToString("N")12,345.67

c# - 将 double 转换为具有 N 位小数、点作为小数点分隔符且没有千位分隔符的字符串

我需要将小数转换为具有N个小数(两个或四个)且没有千位分隔符的字符串:'XXXXXXX(点)DDDDD'CultureInfo.InvariantCulture的问题在于用“,”分隔千位。更新这应该适用于decimal和double类型。我之前的问题:Needtoconvertdoubleordecimaltostring 最佳答案 对于decimal,使用ToString方法,并指定Invariantculture以获取句点作为小数点分隔符:value.ToString("0.00",System.Globalization.Cu