Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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减去百分比#_C#_Percentage_Subtraction - Fatal编程技术网

C# 用C减去百分比#

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

我试图用以下公式减去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);
要解决这个问题,您必须指定您知道使用“显式转换”将失去精度

执行
(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
。您应该手动强制转换它,因为没有for
double
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
。您应该手动强制转换它,因为没有for
double
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
是一个