小编Joh*_*ult的帖子

在c#中使用[]接口(而不是来自ILIst)构建对象

我想传递一个总是已知大小的数组中的一些值.我想定义一个表示这个十进制值数组的类,它不能调整大小,总是具有相同数量的元素,并支持[]数组表示法.

在c ++中,我可以为此执行运算符重载 - 但我无法在c#中看到如何执行此操作

要清楚 - 类的使用将是这样的:

MyValues values = new MyValues;
values[3] = 14;
values[7] = 10
Run Code Online (Sandbox Code Playgroud)

.... 然后

decimal aValue = values[2];
Run Code Online (Sandbox Code Playgroud)

建议?

c#

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

了解涉及浮点类型的除法后的舍入结果

在 Postgres 14 中,我看到的舍入结果对我来说没有意义。试图了解发生了什么事。在所有情况下,我都会将19除以3

将任一integer值转换为real

SELECT  19::real /3;
Run Code Online (Sandbox Code Playgroud)

产生的值为6.333333333333333

SELECT 19/3::real;
Run Code Online (Sandbox Code Playgroud)

产生的值为6.333333333333333

然而,将双方都转换为real产量:

SELECT 19::real/3::real;  
Run Code Online (Sandbox Code Playgroud)

产生的值为6.3333335

有趣的是,如果我将两边都转换为double precisionor float,答案是6.333333333333333

SELECT 19.0 / 3.0;
Run Code Online (Sandbox Code Playgroud)

产量6.333333333333333

SELECT 19.0::real / 3.0::real;
Run Code Online (Sandbox Code Playgroud)

产量6.3333335

SELECT ( 16.0 / 3.0) :: real;
Run Code Online (Sandbox Code Playgroud)

产量6.3333335

我现在看到:

SELECT 6.333333333333333::real;
Run Code Online (Sandbox Code Playgroud)

产量6.33333335

所以真正的问题似乎是:

  1. 为什么我们以这种奇怪的方式四舍五入(我知道实数/浮点数是不精确的,但这似乎很极端。)

  2. 数据类型是什么19::real / 3;

postgresql floating-point rounding type-conversion implicit-conversion

2
推荐指数
1
解决办法
170
查看次数