天道酬勤,学无止境

division

Check if an integer is divisible by another integer (Swift)

问题 我需要检查一个整数是否可以被另一个整数整除。 如果不是,我想将其四舍五入到最接近的数字倍数。 例子: var numberOne = 3 var numberTwo = 5 numberTwo不是numberOne的倍数,因此我希望将numberTwo舍入到 6。 我该怎么做? 谢谢 回答1 您可以使用模运算符% : numberTwo % numberOne == 0 模求 2 个数字之间整数除法的余数,例如: 20 / 3 = 6 20 % 3 = 20 - 6 * 3 = 2 20/3 的结果是 6.666667 - 被除数 (20) 减去除数乘以除数 (3 * 6) 的整数部分是模 (20 - 6 * 3) ,在这种情况下等于 2。 如果模数为零,则被除数是除数的倍数 有关此维基百科页面上的模数的更多信息。 回答2 1)如果要检查或整数除以另一个整数: 斯威夫特 5 if numberOne.isMultiple(of: numberTwo) { ... } Swift 4 或更少 if numberOne % numberTwo == 0 { ... } 2)四舍五入到最接近的倍数的函数: func roundToClosestMultipleNumber(_ numberOne: Int, _ numberTwo: Int) -> Int { var result

2022-07-11 09:40:20    分类:技术分享    ios   swift   integer   division

Why byte and short division results in int in Java?

问题 在 Java 中,如果我们除以byte s、 short s 或int s,我们总是得到一个int 。 如果其中一个操作数很long ,我们就会变long 。 我的问题是 - 为什么byte或short除法不会导致byte或short ? 为什么总是int ? 显然我不是在寻找“因为 JLS 这么说”的答案,而是在询问 Java 语言中这种设计决策的技术原理。 考虑这个代码示例: byte byteA = 127; byte byteB = -128; short shortA = 32767; short shortB = -32768; int intA = 2147483647; int intB = - -2147483648; long longA = 9223372036854775807L; long longB = -9223372036854775808L; int byteAByteB = byteA/byteB; int byteAShortB = byteA/shortB; int byteAIntB = byteA/intB; long byteALongB = byteA/longB; int shortAByteB = shortA/byteB; int shortAShortB = shortA/shortB; int shortAIntB =

2022-05-15 16:12:25    分类:技术分享    java   integer   division   integer-division

Divide two dataframes with python

问题 我有两个数据框: df1和df2 df1 : TIMESTAMP eq1 eq2 eq3 2016-05-10 13:20:00 40 30 10 2016-05-10 13:40:00 40 10 20 df2 : TIMESTAMP eq1 eq2 eq3 2016-05-10 13:20:00 10 20 30 2016-05-10 13:40:00 10 20 20 我想将df1除以df2 : df1的每一列除以df2的所有列来得到这个结果df3 : TIMESTAMP eq1 eq2 eq3 2016-05-10 13:20:00 40/(10+10) 30/(20+20) 10/(30+20) 2016-05-10 13:40:00 40/(10+10) 10/(20+20) 20/(30+20) 请问有什么想法吗? 回答1 您可以使用 div,但在两列TIMESTAMP的 set_index 之前: df1.set_index('TIMESTAMP', inplace=True) df2.set_index('TIMESTAMP', inplace=True) print (df1.div(df2).reset_index()) TIMESTAMP eq1 eq2 eq3 0 2016-05-10 13:20:00 4.0 1.5 0.333333 1 2016

2022-05-15 01:41:15    分类:技术分享    python   pandas   dataframe   multiple-columns   division

C Integer Behavior: Dividing by Zero [duplicate]

问题 这个问题在这里已经有了答案: 除以零:在 C 和/或 C++ 中定义的未定义行为或实现? (8 个回答) 5年前关闭。 我最近决定满足我长期以来的好奇心。 在 C 中除以零会发生什么? 我一直只是简单地用逻辑避免这种情况,但很好奇像 C 这样不能抛出可捕获异常的语言如何处理这种情况。 这是我非常简单的测试(在 Windows 10 上使用 GCC 编译): int main() { double test1 = 1.0/0.0; printf( "%f", test1 ); int test2 = 1/0; printf( "%d", test2 ); } 使用double类型完成的操作给了我一个可爱的小提示,表明结果不是数字: 1.#INF00 。 到目前为止一切都很好。。 但是,当使用int类型执行除以零时,程序并没有雄辩地“停止工作”。 我在 Windows 上运行它,所以我被那个可爱的对话框提醒了。 我很好奇这种行为。 为什么程序崩溃是整数除以零的选择解决方案? 真的没有其他解决方案,比如类似于double方式,来处理被零除吗? 这是每个编译器的相同行为,还是只是 GCC? 回答1 除以零会调用未定义的行为。 当调用未定义的行为时,任何事情都可能发生。 引自 N1570 6.5.5 乘法运算符: 5 / 运算符的结果是第一个操作数除以第二个的商; %

2022-05-14 08:52:07    分类:技术分享    c   division   zero

Computing greatest common denominator in python

问题 回答1 import fractions def gcd(L): return reduce(fractions.gcd, L) print gcd([4,8,12,24])

2022-05-13 10:38:08    分类:技术分享    python   division   integer

Number to digits without using strings nor division by 10

问题 所以有一个挑战,你必须编写一个代码,将 0-999 之间的数字拆分为数字,而不使用字符串或除以 10。我已经非常努力,无法提出完美的算法。 我的代码用于拆分数字 1-99,但我真的认为有一些更好的选择,而不使用 111 if 语句。 好的,这就是我得到的: #include <iostream> int main() { std::cout << "Enter a number "; int number; std::cin >> number; int cycles; if (number > 100) { cycles = 3; } else if (number > 10) { cycles = 2; } else { cycles = 1; } int digit[] = { -1, -1, -1 }; for (int i = 0; i < cycles; i++) { if (number < 10) { digit[0] = number; } else if (number < 100) { if (number < 20) { digit[1] = number - 10; number = 1; } else if (number < 30) { digit[1] = number - 20; number = 2; } else if (number <

2022-05-12 06:59:05    分类:技术分享    c++   division   digits

How to refine the result of a floating point division result?

问题 我有一个使用 newton-raphson 算法计算浮点平方根除法的算法。 我的结果并不完全准确,有时相差 1 ulp。 我想知道是否有一种用于浮点除法的改进算法来获得最终的精度。 我对平方根使用 tuckerman 检验,但是否有类似的除法算法? 或者塔克曼测试可以适应除法吗? 我也尝试过使用这个算法,但没有得到完全准确的结果: z= divisor r_temp = divisor*q r = dividend - r_temp result_temp = r*z q + result_temp 回答1 正确舍入迭代除法结果的一种实用方法是在数学结果的一个 ulp 内产生一个初步商,然后使用精确计算的残差来计算最终结果。 精确计算残差的首选工具是融合乘加 (FMA) 操作。 这种方法的大部分基础工作(在数学和实际实现方面)都归功于 Peter Markstein,后来被其他研究人员改进。 马克斯坦的结果在他的书中得到了很好的总结: Peter Markstein,IA-64 和基本函数:速度和精度。 普伦蒂斯大厅 2000。 使用 Markstein 方法进行正确舍入除法的一种直接方法是首先计算正确舍入的倒数,然后通过将其乘以被除数来计算正确舍入的商,然后是基于残差的最终舍入步骤。 残差可用于直接计算最终舍入结果,如下面代码中的商舍入所示(我注意到此代码序列导致 10

2022-05-10 08:17:12    分类:技术分享    math   floating-point   division   ieee-754

Unexpected result while dividing int by int and storing result into double [duplicate]

问题 这个问题在这里已经有了答案: 使用 int 和 double 的 java 程序7 个答案 9 年前关闭。 我有一个奇怪的问题。 这段代码只是简单地将一个 int 除以另一个 int,将结果存储在一个 double 变量中并打印出来: int a = 200; int b = 557; double divisionResult = a / b; System.out.println("Result: " + divisionResult); 执行此代码后,输出为: Result: 0 这很奇怪,因为200/557是0.3590664272890485 我注意到如果我将a和b在分割线上double double divisionResult = (double) a / (double) b; 它完美地工作。 为什么我必须将变量加倍才能得到真正的除法结果? 回答1 因为在整数除法中,如果答案不是完美整数,小数点后的数字将被删除(整数除法产生整数值)。 请注意,您不必同时转换两个整数,您只能转换一个,第二个将被隐式转换。 为什么在演员表之后它会起作用? 因为 cast 的优先级高于/ 。 所以它首先投射,然后分裂。 如果不是这种情况,您将得到0.0 。 回答2 double d = (double)a/b; 回答3 与往常一样

2022-05-05 16:05:04    分类:技术分享    java   int   double   division

How to find even odd in MIPS assembly using integer registers

问题 如何在 MIPS 中找到输入是偶数还是奇数? 我试图找出使用整数寄存器,但我的程序不工作。 这是代码: li $s1,2 div $s0,$s1 mfhi $t0 xor $t1,$t0,$0 beq $t1,0,Even j Odd 但是这个程序显示偶数奇数,因为偶数是因为结果是十进制的,比如 0.3 。 我该如何解决这个问题? 回答1 你需要and你想用0x01检查的号码。 这就是你在 mips 中使用and的方式: and $d, $s, $t 如果目标寄存器中的值为 1,则为奇数,否则为偶数。

2022-05-04 15:22:12    分类:技术分享    assembly   mips   division

Number to digits without using strings nor division by 10

So there is this challenge in which you have to write a code which splits a number between 0-999 into digits without using string or division by 10. I've tried so hard and couldn't come up with the perfect algorithm. I got my code working for splitting numbers 1-99 but I really think there's some better alternative without using 111 if statements. Alright, so here's what I got: #include <iostream> int main() { std::cout << "Enter a number "; int number; std::cin >> number; int cycles; if (number > 100) { cycles = 3; } else if (number > 10) { cycles = 2; } else { cycles = 1; } int digit[] = {

2022-05-03 08:31:59    分类:问答    c++   division   digits