//Python 的"整数除法"运算符让我感到惊讶,今天:
>>> math.floor(11/1.1)
10.0
>>> 11//1.1
9.0
Run Code Online (Sandbox Code Playgroud)
该文档读取"x和y"的"(浮动)商".那么,为什么math.floor(11/1.1)等于10,但是11 // 1.1等于9?
我有一个定点算术类,其中这是一个显着的部分:
template <typename I, I S>
struct fixed
{
I value;
fixed(I i) : value(i * S) {}
template <typename J, J T> fixed(const fixed<J, T> &fx)
{
if (S % T == 0)
value = fx.value * (S / T);
else if (T % S == 0)
value = fx.value / (T / S);
else
value = S * fx.value / T;
}
static_assert(S >= 1, "Fixed-point scales must be at least 1.");
};
Run Code Online (Sandbox Code Playgroud)
在GCC 4.4.5上,以下代码行:
fixed<int, 8> f …Run Code Online (Sandbox Code Playgroud) 如何计算int的百分之几?
例如,我想从数字中得到30%,如果我将使用这个代码示例,我会得到错误的答案:
int number = 250;
int result = (number / 100) * 30;
Run Code Online (Sandbox Code Playgroud)
结果将是60,真正的答案是75,有没有办法计算它?
我正在尝试将大量数据转换为兆字节.我不想要小数
numeric function formatMB(required numeric num) output="false" {
return arguments.num \ 1024 \ 1024;
}
Run Code Online (Sandbox Code Playgroud)
然后它抛出一个错误
我该如何解决这个问题?
我有一个很长的表达,我认为可以简化,我认为sympy这将是完美的方式.不幸的是,公式依赖于几个整数除法,我找不到任何方法来表示那些sympy.
>>> x=Symbol('x')
>>> (x+1)/2
x/2 + 1/2
Run Code Online (Sandbox Code Playgroud)
显然不是我想要的,1/2不是整数.
>>> (x+1)//2
TypeError: unsupported operand type(s) for //: 'Add' and 'int'
Run Code Online (Sandbox Code Playgroud)
显然sympy不处理//.
>>> Integer((x+1)/2)
# A long list of error messages, ending with ...
TypeError: Integer can only work with integer expressions.
Run Code Online (Sandbox Code Playgroud)
似乎Integer只是为了处理常数而不是公式.
有一个功能,trunc但它似乎没有做任何类似于我想要的东西.
有没有办法表示整数除法sympy?
例如,
如果我写
int var;
var=-8/-5;
Run Code Online (Sandbox Code Playgroud)
根据运算符优先级,-8/-5将等效于((-8)/( - 5)).但C89是否有可能给出两个值,例如-8/5的情况,它可以给出-1或-2.或者它会把它当作两个正整数的划分?
问题是参考KNKing的书(C编程现代方法)
我对ARM处理器的内部细节不是很熟悉,但是我不了解Nvidia Jetson Nano开发板上的以下行为。
C代码示例...
//main.c
#include <stdio.h>
int main()
{
int fred = 123;
int i;
for(i = -10 ; i <= 10 ; i++)
printf("%d / %d == %d\n", fred, i, fred / i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译:
gcc main.c -ggdb
Run Code Online (Sandbox Code Playgroud)
运行生成的a.out可执行文件将产生以下输出...
123 / -10 == -12
123 / -9 == -13
123 / -8 == -15
123 / -7 == -17
123 / -6 == -20
123 / -5 == -24
123 / -4 == -30
123 / …Run Code Online (Sandbox Code Playgroud) (true)整数除法是否会出现上溢/下溢(假设分母不为0)?
由于该值始终保持不变或越来越小(因为在整数除法中,最小的绝对非零分母为1,因此结果永远不会大于分子),因此我认为不会。
我在C / C ++标准的上下文中或多或少地询问,我对各种现代CPU体系结构在定义/未定义行为时如何处理整数除法感兴趣。
我已经在C++中编程了一段时间,但突然有一个疑问,并希望澄清Stackoverflow社区.
当一个整数除以另一个整数时,我们都知道结果是一个整数并且是明智的,浮点除以float也是一个浮点数.
但谁负责提供这个结果?是编译器还是DIV指令?
integer-division ×10
c ×5
c++ ×3
division ×2
python ×2
ansi-c ×1
arm ×1
armv8 ×1
c89 ×1
coldfusion ×1
floor ×1
g++ ×1
integer ×1
java ×1
long-integer ×1
python-2.x ×1
python-3.x ×1
rounding ×1
sympy ×1
templates ×1