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”