相关疑难解决方法(0)

什么时候应该使用double而不是decimal?

我可以说使用double(或float)代替以下三个优点decimal:

  1. 使用较少的内存.
  2. 更快,因为处理器本身支持浮点数学运算.
  3. 可以代表更大范围的数字.

但这些优势似乎只适用于计算密集型操作,例如建模软件中的操作.当然,在需要精确度时,不应使用双精度数,例如财务计算.那么有没有任何实际的理由选择double(或float)而不是decimal"正常"的应用程序?

编辑补充:感谢所有伟大的回应,我向他们学习.

还有一个问题:一些人认为双打可以更精确地代表实数.宣布时,我认为他们通常也会更准确地代表他们.但是,当执行浮点运算时,准确度是否会降低(有时是显着的)是真实的说法吗?

c# floating-point double types decimal

257
推荐指数
5
解决办法
5万
查看次数

双人真的不适合赚钱吗?

我总是在c#中告诉double类型的变量不适合赚钱.所有奇怪的事情都可能发生.但我似乎无法创建一个示例来演示其中的一些问题.谁能提供这样的例子?

(编辑;这篇文章最初被标记为C#;一些回复指的是具体细节decimal,因此意味着System.Decimal).

(编辑2:我特别要求一些c#代码,所以我不认为这只是语言不可知)

c# language-agnostic currency decimal

69
推荐指数
4
解决办法
2万
查看次数

C#自己完成了各个部门

当我在C#中进行分割时,它会自动向下舍入.看这个例子:

double i;
i = 200 / 3;
Messagebox.Show(i.ToString());
Run Code Online (Sandbox Code Playgroud)

这显示了一个包含"66"的消息框.然而,200/3实际上是66.66666.

有没有办法可以避免这种四舍五入并保持像66.6666667这样的数字?

c# division

30
推荐指数
4
解决办法
3万
查看次数

Int到十进制转换 - 在指定位置插入小数点

我有以下int 7122960
我需要将其转换为71229.60

关于如何将int转换为小数并将小数点插入正确位置的任何想法?

c# int decimal decimal-point type-conversion

25
推荐指数
2
解决办法
10万
查看次数

学说2 - 浮点数上的2位小数?

注解:

/**
 * @ORM\Column(type="float", scale="2")
 */
protected $curr_price;
Run Code Online (Sandbox Code Playgroud)

我正在使用它与Symfony 2.

并且此字段在MySQL数据库中变为双精度而不是具有2点精度的浮点数.

我究竟做错了什么?我尝试删除数据库,重新插入等...

mysql symfony doctrine-orm

24
推荐指数
3
解决办法
4万
查看次数

如何决定使用什么 - 双倍或小数?

可能重复:
十进制vs双! - 我应该使用哪一个?何时使用?

double在我的交易软件中使用价格类型.我注意到有时会出现奇怪的错误.如果价格在"点"之后包含4位数,则会出现,如2.1234.

当我从我的程序"2.1234"发送市场订单出现在"2.1235"的价格.

我不使用,decimal因为我不需要"极端"精度.我不需要将"2.00000000003"与"2.00000000002"区分开来.我需要一个点后最多6位数.

问题是 - 线路在哪里?什么时候用decimal

我应该decimal用于任何金融业务吗?即使我只需要点后一位数字?(1.1 1.2等)

我知道decimal很慢,所以double除非decimal绝对需要,否则我更愿意使用.

.net c#

17
推荐指数
3
解决办法
1万
查看次数

C#中的整数转换

        string[] strArray = new string[10] { "21.65", "30.90", "20.42", "10.00", "14.87", "72.19", "36.00", "45.11", "18.66", "22.22" };
        float temp = 0.0f;
        Int32 resConvert = 0;
        Int32 resCast = 0;
        for (int i = 0; i < strArray.Length; i++)
        {
            float.TryParse(strArray[i], out temp);
            resConvert = Convert.ToInt32(temp * 100);
            resCast = (Int32)(temp * 100);
            Console.WriteLine("Convert: " + resConvert + " ExplCast: " + resCast);
        }
Run Code Online (Sandbox Code Playgroud)

答案:

   Convert: 2165 ExplCast: 2164   // ??
   Convert: 3090 ExplCast: 3089   // ??
   Convert: 2042 ExplCast: 2042 …
Run Code Online (Sandbox Code Playgroud)

c# int

14
推荐指数
1
解决办法
3906
查看次数

要比较double和decimal,我应该将double转换为十进制或十进制来加倍?

我需要比较两个值.一个值price代表某物的当前价格,因此decimal您实际上可以按此价格买入或卖出某物.

另一个值是estimatedPrice数学计算的结果,double因为它只是estimation,你实际上不能做任何"操作"esitmatedPrice

现在我想买price < estimatedPrice.

那么我应该将价格加倍或估计价格为十进制吗?

我明白在投射后我会得到"轻微的另一个"数字,但似乎我没有其他选择.

c#

13
推荐指数
1
解决办法
1万
查看次数

为什么除法结果会根据演员类型而有所不同?

这是我不理解的代码的一部分:

byte b1 = (byte)(64 / 0.8f); // b1 is 79
int b2 = (int)(64 / 0.8f); // b2 is 79
float fl = (64 / 0.8f); // fl is 80
Run Code Online (Sandbox Code Playgroud)

为什么前两个计算一个一个?我应该如何执行此操作,所以它快速而正确?

编辑:我需要字节结果

c# rounding integer-division

11
推荐指数
2
解决办法
1173
查看次数

C#:格式化价格值字符串

在C#中,我有一个双变量价格,价值10215.24.我想在一些数字后用逗号显示价格.我的预期产量是10,215.24

c# string-formatting

10
推荐指数
4
解决办法
3万
查看次数