Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用楼层功能_C#_Asp.net - Fatal编程技术网

C# 如何使用楼层功能

C# 如何使用楼层功能,c#,asp.net,C#,Asp.net,我不能在我的项目中使用楼层功能 问题是什么 int numAllSms = Math.Floor( (msg4SmsPart1.Count()) / 69) + Math.Floor((msg4SmsPart2.Count()) / 69) ; 我的字符串是: String msg4SmsPart1 = "", msg4SmsPart2 = "" ; 这是我的错误:以下方法或属性之间的调用不明确:“System.Math.FloordCimal”和“System.Math.FloordDu

我不能在我的项目中使用楼层功能

问题是什么

int numAllSms = Math.Floor( (msg4SmsPart1.Count()) / 69) + Math.Floor((msg4SmsPart2.Count()) / 69) ;
我的字符串是:

 String msg4SmsPart1 = "", msg4SmsPart2 = "" ;

这是我的错误:以下方法或属性之间的调用不明确:“System.Math.FloordCimal”和“System.Math.FloordDuble”

我猜您可以使用它,但结果总是0?整数除法不会返回所需的精度。您还需要将返回值强制转换为int,以匹配您试图分配给的变量。尝试将除法运算符任一侧的操作数强制转换为双精度:

int numAllSms = (int)Math.Floor((double)(msg4SmsPart1.Count()) / 69) + (int)Math.Floor((double)(msg4SmsPart2.Count()) / 69) ;

我猜你可以用它,但结果总是0?整数除法不会返回所需的精度。您还需要将返回值强制转换为int,以匹配您试图分配给的变量。尝试将除法运算符任一侧的操作数强制转换为双精度:

int numAllSms = (int)Math.Floor((double)(msg4SmsPart1.Count()) / 69) + (int)Math.Floor((double)(msg4SmsPart2.Count()) / 69) ;

您至少有两个问题:

将返回一个双精度或十进制;您正在尝试将其分配给int变量 您的除法是在整数算术中执行的,考虑到您使用的是Math.Floor,这可能不是您想要的。 我怀疑你想要:

int numAllSms = (int) (Math.Floor(msg4SmsPart1.Count() / 69.0) +
                       Math.Floor((msg4SmsPart2.Count() / 69.0));
注意使用69.0而不是69,因此它是一个双字面值,导致浮点除法

现在还不清楚你们到底想要的是地板还是天花板——我本以为在这种情况下天花板会更合适。正如p.s.w.g的回答中所指出的,您可以对所有这些都使用整数算法-如果您想要等效的天花板,您可以使用:

 int numAllSms = (msg4SmsPart1.Count() + 68) / 69
               + (msg4SmsPart1.Count() + 68) / 69;

在除法之前加68可以有效地对任何非整数结果进行四舍五入。

您至少有两个问题:

将返回一个双精度或十进制;您正在尝试将其分配给int变量 您的除法是在整数算术中执行的,考虑到您使用的是Math.Floor,这可能不是您想要的。 我怀疑你想要:

int numAllSms = (int) (Math.Floor(msg4SmsPart1.Count() / 69.0) +
                       Math.Floor((msg4SmsPart2.Count() / 69.0));
注意使用69.0而不是69,因此它是一个双字面值,导致浮点除法

现在还不清楚你们到底想要的是地板还是天花板——我本以为在这种情况下天花板会更合适。正如p.s.w.g的回答中所指出的,您可以对所有这些都使用整数算法-如果您想要等效的天花板,您可以使用:

 int numAllSms = (msg4SmsPart1.Count() + 68) / 69
               + (msg4SmsPart1.Count() + 68) / 69;
在除法之前加68可以有效地对任何非整数结果进行四舍五入。

接受并返回双精度或十进制,因此必须将结果强制转换为int,以便将结果转换为int变量。您可能还打算在这里执行双精度或十进制除法。最简单的方法是将69写入69.0双精度或69m十进制:

但是,因为您已经在处理整数了,所以可以跳过调用Math.Floor并利用整数运算:

int numAllSms = (msg4SmsPart1.Count() / 69) + (msg4SmsPart2.Count() / 69);
见:

当你除以两个整数时,结果总是一个整数。例如,7/3的结果是2

此外,由于MSG4SMSSPART1和MSG4SMSSPART2似乎是字符串,因此可以简化为:

int numAllSms = (msg4SmsPart1.Length / 69) + (msg4SmsPart2.Length / 69);
或者只是

int numAllSms = msg4SmsPart1.Length / 69 + msg4SmsPart2.Length / 69;
接受并返回double或decimal,因此必须将结果转换为int,以便将结果转换为int变量。您可能还打算在这里执行双精度或十进制除法。最简单的方法是将69写入69.0双精度或69m十进制:

但是,因为您已经在处理整数了,所以可以跳过调用Math.Floor并利用整数运算:

int numAllSms = (msg4SmsPart1.Count() / 69) + (msg4SmsPart2.Count() / 69);
见:

当你除以两个整数时,结果总是一个整数。例如,7/3的结果是2

此外,由于MSG4SMSSPART1和MSG4SMSSPART2似乎是字符串,因此可以简化为:

int numAllSms = (msg4SmsPart1.Length / 69) + (msg4SmsPart2.Length / 69);
或者只是

int numAllSms = msg4SmsPart1.Length / 69 + msg4SmsPart2.Length / 69;

你有什么错误?你有什么错误信息?您还没有说什么不对。Math.Floor返回十进制或双精度,因此您可能必须在将结果赋给int变量之前强制转换结果。整数除法?尝试将msg4SmsPart1.Count转换为double并将其除以69.0这是我的错误:调用在以下方法或属性之间不明确:“System.Math.FloordCimal”和“System.Math.FloordDouble”您得到了什么错误?您得到了什么错误消息?您还没有说什么不对。Math.Floor返回十进制或双精度,因此您可能必须在将结果赋给int变量之前强制转换结果。整数除法?尝试将msg4SmsPart1.Count转换为double并将其除以69.0这是我的错误:调用在以下方法或属性之间不明确:“System.Math.FloordCimal”和“System.Math.FloordDouble”