如果我想在代码中使用decimal-literal,我已经看到存在m后缀(其中m代表金钱).这是否适用于任何小数或存在更一般的分配(d代表double,即为了shure而不是正确的东西,虽然支持直接转换).
object decimalValue=2m;
Run Code Online (Sandbox Code Playgroud)
请注意,我以对象分配为例,因为在...的情况下
decimal decimalValue=2;
Run Code Online (Sandbox Code Playgroud)
...它隐含的明确,2应该通过编译器解释为十进制.
编辑: m似乎没问题,msdn使用它作为十进制类型的示例.
我正在做一个计算,在调试时我发现了这个:
double num = 1/252;
Run Code Online (Sandbox Code Playgroud)
当我调试它时,num被设置为零(0).是否有一个原因?我想把它作为实际计算.
谢谢
简短的版本:为什么我不必强制60和int,进入一个double,这样如果我关心小数部分,我可以使用另一个double的除法?
长版本:我的老板用一行代码打电话给我.我测试了它并且它工作得很好,但他认为我有一个等待发生的错误.
int durationinseconds = 61; // This is actually filled from a double.tryparse
// from a string value out of an xml doc.
int durationinminutes = (int)Math.Ceiling((double)durationinseconds / 60);
Run Code Online (Sandbox Code Playgroud)
我的代码应该从XML文档获得#秒,然后计算出分钟数,总是向上舍入.60秒= 1分钟,61秒= 2分钟等
我已经测试了我的代码,但是他确认"/ 60"部分应该是"/ 60.0".
我用0,1,2,59,60,61,119,120,121,599,600,601等测试了我的代码,它总能正常工作.
在我为自己辩护之前,我大多理解为什么他认为我需要强制60为小数,因为他认为如果我使用int值,那么double/int将导致一个整数值,从而有效地降低了分数部分.
但是,这不会发生,我无法解释原因.所以,这是我的问题:如果我想使用小数部分,为什么我不能在分割双倍时使用60.0?