我看到,在C#中,舍入a decimal,默认使用MidpointRounding.ToEven.这是预期的,也是C#规范所要求的.但是,考虑到以下因素:
decimal dValstring 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) 编辑:这是一个情况的小提琴.
好的,所以我正在建立一个网页,但我遇到了一个令人恼火的字体怪癖.似乎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) 我正在一个复合键上加入两个表,我想知道在我进行连接时比较相应列的位置是否重要.
假设我有一个表,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