在C/C#/等中,你可以告诉编译器一个字面数字不是它看起来的样子(即float代替double,unsigned long而不是int:
var d = 1.0; // double
var f = 1.0f; // float
var u = 1UL; // unsigned long
Run Code Online (Sandbox Code Playgroud)
等等
有人能指出我这些的清单吗?我特意为short或寻找后缀Int16.
我在哪里可以找到各种C#语言的规范?
(编辑:似乎人们投票失败,因为你可以'谷歌'这个,但是,我的初衷是用谷歌上没有找到的信息回答.我已经接受了最好的谷歌搜索结果,因为它们与没有支付VS的人)
例如,为什么long int有一个文字修饰符,但是short int不是?我指的是这个网站上的以下问题:C#编译器编号文字
通常,C#似乎是一种设计良好且一致的语言.可能有一个强有力的理由为某些类型提供文字修饰符,但不是所有类型.它是什么?
我想弄清楚这些后缀背后的真正含义是什么.换句话说,我正试图"翻译"它们.
+----+--------------+--------+
| | Type | Suffix |
+----+--------------+--------+
| 1 | byte | uy |
| 2 | sbyte | y |
| 3 | int16 | s |
| 4 | uint16 | us |
| 5 | int, int32 | |
| 6 | uint, uint32 | u |
| 7 | int64 | L |
| 8 | uint64 | UL |
| 9 | float | |
| 10 | float | f |
| …Run Code Online (Sandbox Code Playgroud) short s;
s = (EitherTrueOrFalse()) ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)
这失败了:
错误CS0266:无法将类型'int'隐式转换为'short'.存在显式转换(您是否错过了演员?)
任何人都可以解释为什么会这样吗?我能想到的唯一一件事就是编译器没有查看第二个值并且不知道两者之间的范围,在我编写类似的情况下
short s;
s = (EitherTrueOrFalse()) ? 0 : 65000;
Run Code Online (Sandbox Code Playgroud)
正确?唯一的解决方案是丑陋的演员?
此外,似乎C#没有短类型的类型后缀.这是一个非常严重的监督IMO.否则,这将是一个解决方案......
我正在尝试将分钟转换为十进制小时数并舍入到最接近的十五分钟(向上舍入).
基本上:
15分钟= 0.25小时
25分钟= 0.5小时
30分钟= 0.5小时
50分钟= 1小时
60分钟= 1小时
我没有在stackoverflow上找到任何相关内容,但另一个网站告诉我:
var hours = Math.Round((minutes * 100 ) / 60.0);
Run Code Online (Sandbox Code Playgroud)
哪个不接近结果.
我知道我不能使用Math.Round()(因为它将它转换为int?).相同TimeSpan(因为它.TotalHours在a中给出double).
一个好的方法可以从将它除以60开始?