在C#中,如果我想将double(1.71472)转换为int,那么我将得到答案2.如果我使用intValue()方法在Java中执行此操作,我得到1作为答案。将Double转换为Int时的不同答案 - Java与.Net
Java是否会降低转换?
为什么在Java API文档具有即
返回指定 数为int值约为其类,信息很少。这可能涉及到 四舍五入或截断。
有关舍入的更多信息会有帮助!
在C#中,如果我想将double(1.71472)转换为int,那么我将得到答案2.如果我使用intValue()方法在Java中执行此操作,我得到1作为答案。将Double转换为Int时的不同答案 - Java与.Net
Java是否会降低转换?
为什么在Java API文档具有即
返回指定 数为int值约为其类,信息很少。这可能涉及到 四舍五入或截断。
有关舍入的更多信息会有帮助!
当您使用转换转换时,Java从一个浮点型变为一个整型时,向0调整为零,并且C#也是如此。这是Convert.ToInt32
舍入:
double d = 1.71472;
int x = (int) d; // x = 1
int y = Convert.ToInt32(d); // y = 2
详细信息可在Java Language Specification找到。需要注意的是,虽然在Number
引用文档离开选项打开的子类,在具体的拳击类型的文档,如Double
,是明确的关于实施:
返回此Double的值作为 INT(通过转换成键入int)。
使用BigDecimal
时,可以指定八种不同的舍入策略之一。
Java从一个浮点到一个整数类型缩小时,趋近于零。
有关于Java Language Specification中的一般规则的更多文档。注意,尽管在Number
文档离开选项打开的子类,在具体的拳击类型的文档更清楚了:
返回此Double的值作为 INT(通过强制转换为int类型)。
使用BigDecimal时,可以指定八种不同的舍入策略之一。
Jon Skeet是正确的,但要注意的是.NET使用Banker's Rounding作为舍入算法。当你处于偶数整数之间的一半时。
事实上,它比这更糟糕。 .NET在大多数情况下使用银行家舍入,但不是全部(格式字符串是使用常见舍入的一种情况)。您还可以更改.NET 2.0及更高版本中使用的舍入方法。 – 2008-11-18 23:39:36