Java获取双精度的前2位小数
我有一个巨大的双精度,我想从中得到前两个十进制数字作为浮点。以下是一个例子:Java获取双精度的前2位小数,java,math,double,Java,Math,Double,我有一个巨大的双精度,我想从中得到前两个十进制数字作为浮点。以下是一个例子: double x = 0.36843871 float y = magicFunction(x) print(y) 输出:36 如果您不懂,请随意提问。您可以将100相乘,然后使用like 我得到了(请求的) 请注意,如果使用float,则会得到36.0您可以将x乘以100,并使用int代替float。我尝试了以下代码: double x = 0.36843871; int y = (int)(x*100); Sys
double x = 0.36843871
float y = magicFunction(x)
print(y)
输出:36
如果您不懂,请随意提问。您可以将
100相乘,然后使用like
我得到了(请求的)
请注意,如果使用float
,则会得到36.0
您可以将x
乘以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;
double y=Math.abs(x);
而(y<100)
y*=10;
而(y>100)
y/=10;
返回(浮动)(整数)y;
您还需要正确处理未显示的零。显示magicFunction
实现您是否只需要“仅”前2个数字并将其存储为浮点数(或)根据您的示例,您是否需要输出为36.843871??我需要一个不带数字和小数的浮点数输出。0.36843871不是一个巨大的双精度。但是,双精度的实际范围确实会对答案产生巨大的影响,所以你需要提供它,或者说它是否未知。太棒了!这正是我想要的。谢谢:如果DIf x大于1,您将得到一个2位数以上的答案。x%1d*100
如果大于1,您根本不需要Math.floor()。整型转换可以完成所有操作。为什么是Math.floor
还是整数转换而不是Math.rint
?尝试使用x等于0.29.36测试此代码。前两位数是23。现在,0乘以100的确切意义是什么?
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;