我有一个很大的双精度数,想要将其转换为小数并保留前两位小数。以下是示例:
double x = 0.36843871
float y = magicFunction(x)
print(y)
输出:36
如果您不理解,请随时提问。
您可以将数值乘以100
,并使用Math.floor(double)
函数,例如:
int y = (int) Math.floor(x * 100);
System.out.println(y);
我收到了(所请求的)
36
float
,则会得到36.0
。Math.floor()
。整数转换就可以完成所有操作。 - user207421Math.floor
或整数转换而不是 Math.rint
?请尝试使用 x 等于 0.29 的代码进行测试。 - Patricia Shanahanx
乘以100,并使用int
代替float。我尝试了以下代码:double x = 0.36843871;
int y = (int)(x*100);
System.out.println(y);
然后得到输出:
36
如果x大于1且为负数:
double x = -31.2232;
double xAbs = Math.abs( x );
String answer = "";
if( ( int )xAbs == 0 ) {
answer = "00";
}
else {
int xLog10 = ( int )Math.log10( xAbs );
double point0 = xAbs / Math.pow( 10, xLog10 + 1 ); // to 0.xx format
answer = "" + ( int )( point0 * 100 );
}
System.out.println( answer );
double y = Math.abs(x);
while (y < 100)
y *= 10;
while (y > 100)
y /= 10;
return (float)(int)y;
magicFunction
的实现。 - Ramanlfc