标签: arithmetic-expressions

Prolog 动态算术表达式

我是 Prolog 的新手,想定义一个简单的谓词,它根据我选择在算术表达式中使用的函数来计算结果。

所以,这是我的想法:

operation(X,Y, Op, Result):-
  Result is X Op Y.
Run Code Online (Sandbox Code Playgroud)

现在,我期待 Prolog 的这一点:

operation(3,4,'+', X).
X = 7.
Run Code Online (Sandbox Code Playgroud)

但是正如您可能猜到的那样,Prolog 不能识别Op为算术运算。有谁知道这怎么可能?

我还没有在互联网上找到任何东西,即使它是相当基本的,我想。

提前致谢!

arithmetic-expressions prolog

4
推荐指数
1
解决办法
1342
查看次数

算术表达式的正则表达式

我正在尝试编写一个正则表达式来检查给定的字符串是否像 a + b、2 + a + b、3 + 6 * 9 + 6 * 5 + a * b 等...

只有 + 和 * 运算符。

我试过

if (str.matches("(\\d|\\w \\+|\\*){1,} \\d|\\w"))

不幸的是,它只处理像 3 * 7 ... (numeric * numeric) 这样的情况。

等待您的答复,感谢您的阅读。

java regex arithmetic-expressions

4
推荐指数
1
解决办法
5179
查看次数

为什么 bash 大括号扩展在某些算术表达式中有效,但在其他算术表达式中无效?

我正在编写一个非常简单的 bash 脚本,但我无法理解为什么已弃用的 $[] 可以完美地工作,而 $(()) 似乎破坏了整个事情。

我所指的代码是:

for i in {1..10};
do 
    printf %4d $[{1..10}*i]
    echo
done
Run Code Online (Sandbox Code Playgroud)

在此版本中,我没有遇到任何问题,但我不想使用已弃用的 bash 元素,这就是我想切换到 $(()) 的原因。

不幸的是,一旦我将代码更改为:

printf %4d $(({1..10}*i))
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

./script_bash.sh: line 8: {1..10}*i: syntax error: argument expected (error token is "{1..10}*i")
Run Code Online (Sandbox Code Playgroud)

我会很感激在这方面提供一些帮助......

bash shell arithmetic-expressions brace-expansion

4
推荐指数
1
解决办法
336
查看次数

使用算术运算符时禁止隐式转换

我们如何告诉 C++ 编译器在使用+和这样的算术运算符时应该避免隐式转换/,即,

size_t st_1, st_2;
int    i_1,  i_2;

auto st = st_1 + st_2; // should compile
auto i  = i_1  + i_2;  // should compile

auto error_1 = st_1 + i_2;  // should not compile
auto error_2 = i_1  + st_2; // should not compile
// ...
Run Code Online (Sandbox Code Playgroud)

c++ arithmetic-expressions implicit-conversion

4
推荐指数
1
解决办法
153
查看次数

sml中的rem和mod函数有什么区别?

我正在开发 sml 项目,其中我必须为自定义数据类型实现这两个函数remmod

我知道余数rem的定义。
被除数 = 除数 * 商 + 余数

mod的解释是什么?请用简单的话解释一下它们之间的区别。

math arithmetic-expressions sml smlnj

4
推荐指数
1
解决办法
3920
查看次数

为什么6502单片机没有算术右移?

我正在尝试了解旧微控制器的指令集,尤其是 6502。

可以在此处找到的指令集文档列出了两个移位指令(除了旋转指令之外):

ASL--算术左移

LSR--逻辑右移

为什么没有算术右移逻辑左移指令?

我知道可以简单地向其自身添加一个数字,以逻辑地将其向左移动,但专用指令会更方便、更快,即使它只是这样做。但是缺少算术右移指令对我来说没有意义。

assembly arithmetic-expressions 6502 instruction-set bit-shift

4
推荐指数
1
解决办法
3427
查看次数

你能在C中将算术运算符实现为变量吗?

我正在尝试编写一个反向波兰计算器,但我不想为输入的每个算术运算符编写开关。是否可以输入算术运算符并在语言本身内部使用它?

例如,程序可以提示用户输入算术运算符 for:,
a = b [whatever operator here] c;

并且某些变量将存储该运算符。假设是+,我们得到:
a = b + c;

这是可能的还是我应该把它吸收并为操作员编写开关?

c arithmetic-expressions postfix-notation

4
推荐指数
1
解决办法
1043
查看次数

使用 R |> 管道链接算术运算符

这基本上与dplyr with %>% pipeline 中的链算术运算符相同的问题,但针对新的(如 R 4.1)管道运算符进行了更新|>

如何将算术运算符与 R 本机管道链接起来|>使用 dplyr/magrittr,您可以对算术运算符使用反引号,但这不适用于内置的 R 管道运算符。这是一个简单的例子:

R.version$version.string
# [1] "R version 4.2.2 (2022-10-31 ucrt)"

x <- 2
# With dplyr/magrittr, you can use backticks for arithmetic operators
x %>% `+`(2)
# [1] 4

# But that doesn't work with the inbuilt R pipe operator
x |> `+`(2)
#  Error: function '+' not supported in RHS call of a pipe
Run Code Online (Sandbox Code Playgroud)

希望答案足够通用,适用于通常不能与本机 R 管道很好地配合的任何运算符或内置函数(我的版本是 R 4.2.2)。

答案/sf/answers/5046054471/有很多关于 …

r arithmetic-expressions pipe

4
推荐指数
1
解决办法
254
查看次数

在T-SQL中,如何获得一个包含2个小数点(或百分比)的列?

在SQL Server 2008中,我正在运行一个报表,我需要分割两列(称为整数CompletesPrescreens整数),然后我转到Excel并将其Prescreens除以Completes,并将其转换为带有2位小数的数字,然后将其转换为百分比.即 - > 0.34,然后变为34%.

在SQL中我知道我可能无法将输出视为"34%",但至少我希望它为0.34.到目前为止,我有:

cast((sq.Completes/sq.Screens ) as float ) as 'conv'
Run Code Online (Sandbox Code Playgroud)

完成是较小的数字(通常是27,38等),屏幕是较大的数字(124,276等)

但这是输出我的专栏0s.如何让它显示0.34,0.84等

t-sql sql-server math arithmetic-expressions sql-server-2008

3
推荐指数
1
解决办法
9073
查看次数

将$ val*1乘以将null转换为零是"不好"的做法

我正在使用PHP 5.5从数字postgresql数据库表字段中检索数值.它可以来自DB作为null或实际数字,无论我将其存储在变量中.因为我们中的一些人可能知道或者可能不知道null*1 = 0,这是我喜欢做的事情,但是我担心这是否是错误的,或者将潜在的空值转换为零而不实际拥有它是不好的做法检查价值.见下文:

... $fieldVal *= 1; //assume at this point this holds value returned by DB ...

因此,如果db返回null,则$ fieldVal将变为零,并且任何非null值将保持不变.非常感谢您的见解.

php postgresql null arithmetic-expressions

3
推荐指数
1
解决办法
510
查看次数