C# 用C减去百分比#
我试图用以下公式减去C中的百分比: 但我有一个错误: 无法将“double”隐式转换为“int”。存在显式转换 (你是不是错过了演员阵容?)C# 用C减去百分比#,c#,percentage,subtraction,C#,Percentage,Subtraction,我试图用以下公式减去C中的百分比: 但我有一个错误: 无法将“double”隐式转换为“int”。存在显式转换 (你是不是错过了演员阵容?) 您的值n是int int n = 100; n = (int) (n - (n * 0.25)); Console.WriteLine(n); 当您乘以0.25(这是一个double)时,得到的值是一个double,您试图分配给int int n = 100; n = (int) (n - (n * 0.25)); Console.WriteLine(n
您的值
n
是int
int n = 100;
n = (int) (n - (n * 0.25));
Console.WriteLine(n);
当您乘以0.25
(这是一个double
)时,得到的值是一个double
,您试图分配给int
int n = 100;
n = (int) (n - (n * 0.25));
Console.WriteLine(n);
要解决这个问题,您必须指定您知道使用“显式转换”将失去精度
执行(Type)value
被称为“将value
转换为Type
”。这正是错误消息建议您执行的操作
或者,如果不想保持精度,请不要将
n
声明为int
,而是声明为double
。在这种情况下,您不必将n*0.25
转换为int
您的值n
是int
int n = 100;
n = (int) (n - (n * 0.25));
Console.WriteLine(n);
当您乘以0.25
(这是一个double
)时,得到的值是一个double
,您试图分配给int
int n = 100;
n = (int) (n - (n * 0.25));
Console.WriteLine(n);
要解决这个问题,您必须指定您知道使用“显式转换”将失去精度
执行(Type)value
被称为“将value
转换为Type
”。这正是错误消息建议您执行的操作
或者,如果不想保持精度,请不要将
n
声明为int
,而是声明为double
。在这种情况下,您不必将n*0.25
强制转换为int您的变量n
必须是整数,但您的计算结果是双精度的,因为它涉及到双精度的乘法(0.25
)
int n = 100;
n = (int) (n - (n * 0.25));
Console.WriteLine(n);
您可以将结果强制转换回int,如下所示:
n = (int)(n - (n * 0.25));
变量n
必须是整数,但计算结果是双精度的,因为它需要乘以双精度(0.25
)
您可以将结果强制转换回int,如下所示:
n = (int)(n - (n * 0.25));
我假设n
是一个整数类型,比如说int
,因为你没有给出任何线索。在这种情况下,最简单的解决方案是:
n = Convert.ToInt32(n - (n * 0.25));
或者你可以投:
n = (int)(n - (n * 0.25));
我假设n
是一个整数类型,比如说int
,因为你没有给出任何线索。在这种情况下,最简单的解决方案是:
n = Convert.ToInt32(n - (n * 0.25));
或者你可以投:
n = (int)(n - (n * 0.25));
检查变量“n”的类型
“n”应为双精度类型
或
使用显式强制转换转换为int
int n = (int)(n - (n * 0.25));
检查变量“n”的类型
“n”应为双精度类型
或
使用显式强制转换转换为int
int n = (int)(n - (n * 0.25));
您的n
变量是int
。当您尝试使用0.25
进行乘法运算时,0.25
是double
,因此结果将是double
。您应该手动强制转换它,因为没有fordouble
到int
。你必须使用它们
From --> To
double --> sbyte , byte, short, ushort, int, uint, long, ulong, char, float, or decimal
您应该将正确的表达式转换为int
int n = 100;
n = (int) (n - (n * 0.25));
Console.WriteLine(n);
这是一本书
记住
- 显式数字转换可能会导致精度损失
- 从
double
值转换为整数类型时,该值将被截断。如果生成的整数值超出目标值的范围,则结果取决于溢出检查上下文
您的n
变量是一个int
。当您尝试使用0.25
进行乘法运算时,0.25
是double
,因此结果将是double
。您应该手动强制转换它,因为没有fordouble
到int
。你必须使用它们
From --> To
double --> sbyte , byte, short, ushort, int, uint, long, ulong, char, float, or decimal
您应该将正确的表达式转换为int
int n = 100;
n = (int) (n - (n * 0.25));
Console.WriteLine(n);
这是一本书
记住
- 显式数字转换可能会导致精度损失
- 从
double
值转换为整数类型时,该值将被截断。如果生成的整数值超出目标值的范围,则结果取决于溢出检查上下文
您必须将结果强制转换为int
n=(int)(n-(n*0.25));
您必须将结果强制转换为int
n=(int)(n-(n*0.25));
尝试:
注意:这样做,n结果中的点后面就不会有数字了。试试:
注意:通过这样做,您将不会在n结果的点后面有数字。我想这可能是一个问题,因为n的类型是int
它最不需要是double
因此,当您有n=n-(n*0.25)
时,结果是双精度的
如果您想将其转换为int,那么请注意舍入,因为它不会总是以.00
结尾
此外,我认为这将更好n=n*0.75
我想这可能是一个问题,因为n的类型是int
它最不需要是double
因此,当您有n=n-(n*0.25)
时,结果是双精度的
如果您想将其转换为int,那么请注意舍入,因为它不会总是以.00
结尾
另外,如果您不想在int和double类型之间来回切换,我认为这会更好,您可以使用:
n=(n*75)/100
如果您的答案有小数,它们将丢失。如果您不想在int和double类型之间来回切换,您可以使用:
n=(n*75)/100
如果你的答案有小数点,它们将丢失,不过最好的办法是这样做
n = n - n/4;
如果希望百分比为0到100之间的整数,则应通过将int n
替换为double n
来声明n
为double
。
拟议转让中不会发生成本高昂的转换。请注意,n/4
是一个