Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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
Android 用小数除数_Android_Math_Division_Modulo_Calculation - Fatal编程技术网

Android 用小数除数

Android 用小数除数,android,math,division,modulo,calculation,Android,Math,Division,Modulo,Calculation,如何检查数字是否可以被特定的数字整除,或者两个数字是否都是十进制的。小数点的值为两位数。 我已经试过了 dn/size%1==0,但在某些情况下,它不能提供正确的输出。 我怎样才能解决它。在这里,我给出了一些示例值,如 双dn=369.35369.55.370.55,尺寸可为0.05、0.10、0.5等 请帮我把它缩短。dn/size%1==0虽然看似合理,但会遇到围绕二进制浮点运算的陷阱 如果你的数字总是不超过两个小数位,那么最简单的方法就是放大乘以100,并且依赖于这样一个事实:如果y除以x

如何检查数字是否可以被特定的数字整除,或者两个数字是否都是十进制的。小数点的值为两位数。 我已经试过了 dn/size%1==0,但在某些情况下,它不能提供正确的输出。 我怎样才能解决它。在这里,我给出了一些示例值,如 双dn=369.35369.55.370.55,尺寸可为0.05、0.10、0.5等

请帮我把它缩短。

dn/size%1==0虽然看似合理,但会遇到围绕二进制浮点运算的陷阱

如果你的数字总是不超过两个小数位,那么最简单的方法就是放大乘以100,并且依赖于这样一个事实:如果y除以x,那么100*y除以100*x。换言之:

if (Math.round(100 * dn) % Math.round(100 * size) == 0){
    Log.d(TAG,"Divisible");
} else {
    Log.d(TAG,"Not divisible");
}
这就避免了二进制浮点算法的任何问题。我故意使用Math.round而不是截断,同样是为了避免有关浮点的问题,我认为这个平台的一个怪癖就是返回整数类型


进一步阅读:

你做得不对

请尝试使用此代码

if(dn % size  == 0)    {
  Log.d(TAG,"Divisible");
} else {
   Log.d(TAG,"Not divisible");
}
更新

如果您有大的十进制数,请使用

例如:


在前面输入cast值,然后进行数学运算。你能给我举个例子吗,比如……给出两个正确的值和预期的输出。上述值是正确的,它们不是静态的,它们可能会改变。输出结果是,我想检查数字是否可以被大小整除,如果不是,则显示toast,否则不显示。您想检查369.35是否可以被0.05整除?不,通常不会,因为是浮点数字。你会很幸运地得到二元有理数。370.42%0.05返回0.01999999995355和370.45%0.05返回0.04999999956704在这种情况下,你必须使用双精度或大小数我如何使用它请给我演示我不能舍入大小值如果我舍入0.05,它返回5,这不确定。你是什么意思?这不重要,因为你也是乘以dn。试试看!例如,37042除以5的精确整除率与370.42除以0.05的整除率相同。从数学上来说,就是这样。
if(dn % size  == 0)    {
  Log.d(TAG,"Divisible");
} else {
   Log.d(TAG,"Not divisible");
}
BigDecimal bg1, bg2, bg3;

bg1 = new BigDecimal("513.54");
bg2 = new BigDecimal("5");

// bg2 divided by bg1 gives bg3 as remainder
bg3 = bg1.remainder(bg2);