小编sta*_*ack的帖子

为什么.NET decimal.ToString(string)从零开始,显然与语言规范不一致?

我看到,在C#中,舍入a decimal,默认使用MidpointRounding.ToEven.这是预期的,也是C#规范所要求的.但是,考虑到以下因素:

  • 一个 decimal dVal
  • string sFmt传入的格式dVal.ToString(sFmt)将导致包含圆形版本的字符串dVal

...很明显,decimal.ToString(string)返回使用舍入的值MidpointRounding.AwayFromZero.这似乎是C#规范的直接矛盾.

我的问题是:这是否有充分的理由?或者这只是语言的不一致?

下面,作为参考,我已经包含了一些代码,这些代码向控制台写入各种舍入操作结果和decimal.ToString(string)操作结果,每个代码都在值数组中的每个值上decimal.实际输出是嵌入式的.之后,我在C#语言规范部分中包含了该decimal类型的相关段落.

示例代码:

static void Main(string[] args)
{
    decimal[] dArr = new decimal[] { 12.345m, 12.355m };

    OutputBaseValues(dArr);
    // Base values:
    // d[0] = 12.345
    // d[1] = 12.355

    OutputRoundedValues(dArr);
    // Rounding with default MidpointRounding:
    // Math.Round(12.345, 2) => 12.34
    // Math.Round(12.355, 2) => 12.36
    // decimal.Round(12.345, 2) => 12.34
    // decimal.Round(12.355, 2) => …
Run Code Online (Sandbox Code Playgroud)

c# decimal tostring rounding number-formatting

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

我怎样才能让这个文字一直坐到左边?

编辑:这是一个情况的小提琴.

好的,所以我正在建立一个网页,但我遇到了一个令人恼火的字体怪癖.似乎sans-serif字体拒绝准确地坐在他们所在的盒子的左边缘.

以下是一些用于演示此问题的实验性HTML:

<html>
<head>
    <style>
        .box {
            margin: 30px 0px 0px 30px;
            border: 1px solid #f00;
        }
    </style>
</head>
<body style="font-size: 36px;">
    <!-- text beginning with 'M', which has serifs protruding from the left side in a serif font -->
    <div class="box" style="font-family: 'Segoe UI';">My text</div> <!-- sans-serif -->
    <div class="box" style="font-family: 'Times New Roman';">My text</div> <!-- serif -->
    <div class="box" style="font-family: 'Arial';">My text</div> <!-- sans-serif -->
    <div class="box" style="font-family: 'Garamond';">My text</div> <!-- serif -->

    <!-- …
Run Code Online (Sandbox Code Playgroud)

html css

7
推荐指数
1
解决办法
138
查看次数

在SQL Server中连接两个表时,检查复合键的一部分的位置是否重要?

我正在一个复合键上加入两个表,我想知道在我进行连接时比较相应列的位置是否重要.

假设我有一个表,TableA,列ColAFoo,ColAFoo2和ColABar.TableA具有包含ColAFoo和ColAFoo2(PK_TableA)的复合主键.

我也有TableB,ColBFoo,ColBFoo2和ColBOther.TableB的列ColBFoo和ColBFoo2包含TableA主键(FK_TableA_TableB)的外键.

我需要在密钥上加入两个表.在性能方面,以下三个(非常人为的)陈述之间是否存在差异?

SELECT *
  FROM TableA a
  JOIN TableB b
    ON  a.ColAFoo = b.ColBFoo
        AND a.ColAFoo2 = b.ColBFoo2

SELECT *
  FROM TableA a
  JOIN TableB b
    ON  a.ColAFoo = b.ColBFoo
  WHERE a.ColAFoo2 = b.ColBFoo2

-- this one is a little /too/ contrived, apparently (see comments)
SELECT *
  FROM TableA a
  JOIN TableB b
  WHERE a.ColAFoo = b.ColBFoo
        AND a.ColAFoo2 = b.ColBFoo2

sql sql-server performance

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