Java与C中的C#-intValue()等价#
我试图将Java中的一段代码重新编写到C#,但遇到了一个问题,基本上我创建了一个返回字符串的方法,但是从C#和Java返回的字符串不一样,因此代码是错误的。一个问题是下面的代码 我有以下Java代码:Java与C中的C#-intValue()等价#,c#,java,asp.net,C#,Java,Asp.net,我试图将Java中的一段代码重新编写到C#,但遇到了一个问题,基本上我创建了一个返回字符串的方法,但是从C#和Java返回的字符串不一样,因此代码是错误的。一个问题是下面的代码 我有以下Java代码: Double localDouble1 = new Double(d1 / 100.0D); int l = localDouble1.intValue(); 我想用C重新写,我已经试过了 Double localDouble1 = d1 / 100.0D; int l = Convert.To
Double localDouble1 = new Double(d1 / 100.0D);
int l = localDouble1.intValue();
我想用C重新写,我已经试过了
Double localDouble1 = d1 / 100.0D;
int l = Convert.ToInt32(localDouble1);
它可以编译并工作,但结果不同,在我的特定场景中,javaintl变量包含0,而c#one返回1
有没有更好的方法来实现我需要做的事情,就像在Java中一样。舍入到最接近的整数。不会-它会截断,就像cast一样(如文档所示)
换个演员吧:
int l = (int) localDouble1;
(同时尽量避免使用类似于1
:)的名称,如l
)试试这个
Double localDouble1 = d1 / 100.0D;
int l=Convert.ToInt32(Math.Floor(localDouble1));
因为Convert.ToInt32
如果值介于两个整数之间,则返回偶数;也就是说,5.5转换为6,6.5转换为7。
@Jon Skeet-关于名字你是对的,我快发疯了,因为我在另一行看到了“inti2=((i1-(l*100))/10;”,我想这怎么不是机器,只是整数。但我没有写这段代码,我只是在重新编写它。不管怎样,谢谢你的回答,我现在就去试试。这不是说它很流行吗@霍根:这是不精确的——我链接到的后面的文档更好。基本上是四舍五入,但四舍五入是向零,而不是向最接近的整数舍入。@Jon Skeet-我忽略了d1,因为这不是问题所在,转换为。ToInt32是问题所在,顺便说一句,你的建议奏效了:)虽然我很高兴它解决了问题,让代码运行以查看差异总是很有用的——这取决于
d1
@Jon Skeet的值——我知道,我会确保下次放入所有相关代码
cast int l = (int) localDouble1;