clojure-基本语法-数字类型

[b][color=red]一、算术运算[/color][/b]
[color=red]加法+:[/color]
加法函数(+)接受任意数值类型的参数,返回它们的和;没有参数时返回0。

user=> (+)
0
user=> (+ 1)
1
user=> (+ 1 2 3 4)
10


[color=red]减法-:[/color]
减法函数(-)接受任意数值类型的参数。如果只有一个参数,则返回它相反的数。当有多个参数时,返回第一个参数减去后面所有参数的结果。

user=> (- 1)
-1
user=> (- 10 2)
8
user=> (- 10 2 3 4)
1


[color=red]乘法*:[/color]
乘法函数 (*) 接受任意数值类型的参数并返回它们的乘积,如果只有一个参数,返回1。

user=> (*)
1
user=> (* 1)
1
user=> (* 1 2 3)
6
user=> (* 0 1 2 3)
0


[color=red]除法/:[/color]
除法函数 (/) 接受任意数值类型的参数。第一个参数是分子,其他任意参数是分母。如果没有分母,则函数返回 1 / 分子,否则返回分子除以分母。

user=> (/ 2)
1/2
user=> (/ 2 10)
1/5
user=> (/ 1 2 4 6)
1/48


[color=red]商quot:[/color]
商函数 (quot) 接受两个数值类型参数并返回第一个参数除以第二个参数的整数商。

user=> (quot 10 3)
3
user=> (quot 11 3)
3
user=> (quot 12 3)
4
user=> (quot -5.9 3)
-1.0
user=> (quot 10 -3)
-3
user=> (quot 15 0)
ArithmeticException / by zero clojure.lang.Numbers.quotient (Numbers.java:1764)

注意:商函数quot与/函数不是等价的

user=> (= (/ 4 2) (quot 4 2))
true
user=> (= (/ 3 2) (quot 3 2))
false


[color=red]取余rem:[/color]
余数函数 (rem) 接受两个数值类型参数并返回第一个参数除以第二个参数的余数。

user=> (rem 10 9)
1
user=> (rem 2 2)
0
user=> (rem 10 -3)
1


[color=red]取模mod:[/color]
取模函数(mod)接收两个数值类型参数,如果两个参数为正整数或者同为负整数,则与rem函数返回值一致;如果其中有一个负数,则结果为rem返回值与第二个参数之和。比较绕口……

user=> (mod 10 9)
1
user=> (mod 2 2)
0
user=> (mod 10 -3)
-2

[color=red](rem 10 -3)和(mod 10 -3)结果不一致,分别为1,-2。-2是如何得到的?由于(rem 10 -3)的返回值为1,那么(mod 10 -3)的返回值为(+ 1 (rem 10 -3))=-2[/color]
贴上mod函数源码,仅供参考。

(defn mod
"Modulus of num and div. Truncates toward negative infinity."
{:added "1.0"
:static true}
[num div]
(let [m (rem num div)]
(if (or (zero? m) (= (pos? num) (pos? div)))
m
(+ m div))))


[color=red]增量函数inc:[/color]
函数 (inc) 接受一个数值类型参数并返回它的值加1。

user=> (inc 1)
2
user=> (inc -1)
0


[color=red]减量函数 (dec):[/color]
减量函数 (dec) 接受一个数值类型参数并返回它的值减1。

user=> (dec 1)
0
user=> (dec -1)
-2


[color=red]最大函数max:[/color]
最大数函数 (max) 接受任意数值类型的参数并返回最大的。

user=> (max 5 -1 2 3)
5


[color=red]最小函数min:[/color]
最小数函数 (min) 接受任意数值类型的参数并返回最小的。

user=> (min 5 -1 2 3.9)
-1


[color=red]精度函数with-precision:[/color]
精度函数with-precision针对大数据值操作的精度、小数点运算函数。

user=> (with-precision 10 (/ 1M 3))
0.3333333333M
user=> (with-precision 2 (/ 100M 3))
33M
user=> (with-precision 4 (/ 100M 3))
33.33M


[b][color=red]二、比较运算:[/color][/b]
[color=red]值相等=:[/color]
值相等(=)函数接受若干参数,比较若干参数值是否相等。一个参数时,返回true。参数可以为nil。与java中的equals一致。

user=> (= 1)
true
user=> (= 1 1)
true
user=> (= 1 1.0)
false
user=> (= 1 2)
false
user=> (= 1 1 1)
true
user=> (= 1 1 2)
false
user=> (= nil nil)
true


[color=red]等价值==:[/color]
等价值函数接受若干参数,比较若干参数值是否等价。一个参数时,返回true。参数可以为nil、keyword等

user=> (== 1 1.0)
true
user=> (== :foo)
true
user=> (== nil)
true


[color=red]值不同函数not=:[/color]
等价于(not (= obj1 obj2))

user=> (not= 1 1)
false
user=> (not= 1 2)
true
user=> (not= 1 1.0)
true
user=> (not= true true)
false
user=> (not= true false)
true
user=> (not= true true false)
true


[color=red]小于 (<) [/color]
小于函数 (<) 接受任意数值类型的参数,如果它们按升序排列返回true,否则返回false。

user=> (< 5 10)
true
user=> (< 5 10 9)
false
user=> (< 1)
true


[color=red]大于 (>) [/color]
大于函数 (>) 接受任意数值类型的参数,如果它们按降序排列返回true,否则返回false。

user=> (> 5 2)
true
user=> (> 5 10 9)
false
user=> (> 1)
true


[color=red]大于等于 (>=)[/color]
大于等于函数 (>=) 接受任意数值类型的参数,如果它们按降序排列或顺序相等返回true,否则返回false。

user=> (>= 10 5 5)
true


[color=red]小于等于 (<=)[/color]
小于等于函数 (<=) 接受任意数值类型的参数,如果它们按升序排列或顺序相等返回true,否则返回false。

user=> (<= 2 5 5)
true


[b][color=red]三、验证函数:[/color][/b]
[color=red]0检查zero?:[/color]
0检查函数 (zero?) 接受一个数值类型参数,如果是0返回true,否则返回false

user=> (zero? 0.0)
true


[color=red]正数检查pos?: [/color]
正数检查函数 (pos?) 接受一个数值类型参数,如果是大于0返回true,否则返回false

user=> (pos? -2)
false
user=> (pos? 1.2)
true


[color=red]负数检查neg?:[/color]
负数检查函数 (neg?) 接受一个数值类型参数,如果是小于0返回true,否则返回false

user=> (neg? -3)
true
user=> (neg? 0)
false


[color=red]偶数检查even?:[/color]

user=> (even? 10)
true
user=> (even? 3)
false


[color=red]奇数检查odd?:[/color]

user=> (odd? 10)
false
user=> (odd? 3)
true


[color=red]数值检查number?:[/color]
数值检查函数 (number?) 接受一个参数,如果是数值返回true,否则返回false

user=> (number? 3.2)
true
user=> (number? "2")
false


[b][color=red]四、强制转换:[/color][/b]
强制转换支持以下类型:

byte Coerce to byte.
short Coerce to short.
int Coerce to int.
long Coerce to long.
float Coerce to float.
double Coerce to double.
bigint Coerce to BigInteger.
bigdec Coerce to BigDecimal.
num Coerce to Number.
rationalize returns the rational value of num


user=> (double 12)
12.0
user=> (short 10000)
10000
user=> (short 22.2)
22
user=> (int 22.2)
22
user=> (long 22.2)
22
user=> (float 100)
100.0
user=> (bigint 1000000000)
1000000000N
user=> (bigdec 100000)
100000M
user=> (num 1.11)
1.11
user=> (rationalize 0.5)
1/2
VMware ESXi +DELL虚拟化存储磁盘容量处于紧急状态问题的处理 1、环境介绍 exsi server两台(DELL R730 ): 192.168.3.206 VMware EXSi6.5 192.168.3.207 VMware EXSi6.5 磁盘存储柜一台(DELL SC2000): 192.168.3.208 2、故障处理 由于前期规划的卷空间过大,虚拟机文件逐年增大以后,造成卷的磁盘占用过与整个磁盘空间的容量,虚拟化平台可用容量爆掉,DELL SC2000自动切换到紧急状态,禁止所有磁盘I/O,exsi主机上的虚拟机无法开机 首先,安装 阅读详情

相关推荐

ComfyUI+minimaxh3本地部署:漫剧分镜批量生成工作流全实操

视频生成模型正从云端API向本地化部署迁移,背后的技术逻辑是将扩散模型的文本编码、潜空间采样、VAE解码等阶段拆分为可编排的独立环节。ComfyUI作为节点化管线工具,恰好能以可视化连线方式管理这些阶段,让生成过程可控、可复用、可批量执行。minimaxh3模型支持本地推理,配合LoRA微调与参数优化,能够在保证角色一致性的前提下,从分镜脚本批量产出连续剧情片段,规避云端排队、成本高、素材不可控等工程问题。这套工作流广泛应用于漫剧、短剧和动态条漫的工业化生产,尤其适合需要高频迭代分镜草稿的内容团队。文本以零

weixin_29057065的博客 362

java反射getConstructor()[0].newInstance(params)报wrong number of args的错误

先转一个连接,问题差不多:http://redarmychen.iteye.com/blog/924134但有一个问题没解决,如果构造器有多个参数,且其中有一个参数为字符串类型的,参数值为一个逗号表达式,在传入参数的时候就不能直接转成Object,要不然依然无法解决问题这个问题最好是不用逗号表达式来传入参数,避免该异常的出现,如果已经使用了逗号表达式来作为参数值,最直接的方法...

weixin_33770878的博客 642

PyGPT:桌面AI助手整合大模型与本地知识库,打造高效工作流

大语言模型(LLM)通过理解和生成自然语言,正深刻改变人机交互方式。其核心原理是基于海量数据训练的Transformer架构,能够根据上下文进行预测和生成。这一技术价值在于将强大的AI能力平民化,广泛应用于代码生成、文档分析、创意写作和智能问答等场景。通过API调用云端模型或本地部署开源模型,开发者可以构建个性化的AI应用。本文聚焦于PyGPT这一桌面AI助手,它巧妙地将ChatGPT、Claude、Gemini等主流大模型与LlamaIndex、Ollama等本地化工具整合,实现了聊天、文件分析、代码解释

weixin_28679635的博客 435

java 执行clojure脚本_如何从Java调用Clojure宏?

反正有从Java调用Clojure宏吗?这是我想做的事情:RT.var("clojure.core","require").invoke(Symbol.create("clojure.contrib.prxml"));Var prxml = RT.var("clojure.contrib.prxml","prxml");Var withOutStr = RT.var("clojure.core",...

weixin_39853892的博客 194

java写一个多人线上聊天室

课程作业谔谔

weixin_51614848的博客 1135

Claude Skills:不是更聪明,而是更“像专家”的 Agent 养成方法

Claude Skills 不是在告诉 Agent“你能做什么”, 而是在约束它“你应该如何思考、如何判断、如何给结论”。

测试者家园 1293

clojure 新手指南(8):参数和重载

现在我们首先定义一个支持4个参数相加的函数: (defnadd[v1v2v3v4] (+v1v2 (ifv3 v3 0) (ifv4 v4 0) )) ...

chuangong2592的博客 358

USB-Blaster在Win11报错?3分钟搞定驱动兼容性问题(Quartus 21.4实测)

本文针对Windows 11系统下USB-Blaster驱动安装问题,提供了一套快速解决方案。通过优化驱动安装流程、绕过签名验证及设备管理器高级技巧,帮助开发者在3分钟内解决Quartus 21.4的兼容性问题,提升FPGA调试效率。

weixin_30772105的博客 288

clojure/core partial

点我查看原文 (ns $clojureDoc.core.partial [:require clojure.pprint]) ;; 用法:(partial f) (partial f arg1) (partial f arg1 arg2) (partial f arg1 arg2 & more) ;; Takes a function f and fewer than the n...

ningDr的博客 384

Fluent实战——残差震荡分析与收敛优化策略

本文深入探讨了Fluent仿真中残差震荡的成因与优化策略。残差震荡是流场物理或数值问题的关键信号,文章系统分析了网格质量、边界条件、物理模型非定常性及求解设置四大主因,并提供了库朗数与松弛因子的调参心法,以及针对超音速流、共轭传热等典型场景的实战优化方案,旨在帮助用户有效提升计算收敛性与结果可靠性。

w1x2y3的博客 313

PCIe 全解析笔记:从协议本质到工程实现

学习 PCIe,最容易陷入的误区是直接跳进协议手册(Base Spec 1300 多页),然后在 TLP 字段、LTSSM 状态、Ordering Rules 中迷失方向。正确的思维路径历史维度:从 PCI 到 PCIe,解决了什么核心矛盾?抽象维度:协议栈分层的真正意图是什么?工程维度:高速串行链路面临哪些物理挑战?协议如何应对?系统维度:作为 CPU 与外设的"动脉",PCIe 如何融入整个计算机体系?带着这四个视角去看每一个细节,知识才能内化为认知。

m0_46644103的博客 260

Clojure语言的语法

在Clojure中,可以使用def来定义变量,使用defn来定义函数。定义变量clojure(def x 10)定义函数clojure(+ a b))调用函数只需使用其名称及参数:clojure(add 5 7);;返回 12Clojure作为一种现代编程语言,融合了Lisp的优雅与现代编程的需求,提供了强大的函数式编程特性、不可变性和并发支持。通过简单的语法和丰富的库,Clojure在Web开发、数据分析等多个领域展现了其独特的魅力。

2501_90990389的博客 422

基于深度学习的智能监考系统(UI界面 + YOLOv8/v7/v6/v5代码 + 训练数据集)

行为检测与识别:能够自动识别考生在考试中的异常行为,如作弊、看手机、交头接耳等。实时监控:在考试期间,系统能够对考生的行为进行实时监控,及时发出警报。用户交互:通过简洁易用的UI界面,便于监考人员进行实时监控、查看警报和视频回放等操作。行为分析与反馈:系统能够识别出考生的违规行为,并提供反馈。本文详细介绍了如何构建基于YOLOv5的智能监考系统,从数据集的准备、YOLO模型的训练,到UI界面的设计与实现,展示了一个完整的深度学习监控系统。

YOLO 781

Clojure语言二:Literal

Literal中文可能应该是字面常量。字符串如果要表示字符串的话,应该用双引号括起来,比如"hello,world", 允许跨多行,并且可以使用Java的escape characters. 参考:http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.6nilnil相当于Java中的null,代表没有值,如果用在条

Dean Chen的专栏 3098

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

clojure 新手指南(5):判断&基本类型

判断语句 在Clojure中,所有的语法规则最终都是S表达式。我们如何知道哪些是判断语句呢?这个很简单,clojure中(lisp习惯)有个规定:对于判断功能的函数,函数名后面都有一个“?”号。所以我们只要看到后面带问号的函数名,就知道这一定是一个判断语句。很简单吧! 例如 "...

chuangong2592的博客 448

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Clojure语言的数据类型

Clojure是一种现代的LISP方言,专注于函数式编程和并发编程。由于其简洁的语法和强大的功能,Clojure在处理复杂的数据时表现得尤为出色。本文将深入探讨Clojure的基本数据类型,包括原始类型、集合类型和其他一些特性,并结合示例来帮助读者更好地理解这些类型的使用方法。

2501_91310470的博客 412

Clojure 学习笔记 1 - Syntax

Clojure 是一门运行在 JVM 上的 Lisp 方言。我的学习方式是通过看官网的Getting Started。 Mac OS 下配置开发环境 用 homebrew 先安装 Java: brew install java 然后安装 Clojure 的 REPL 解释器: brew install clojure 暂时只安装了这么多,没有安装 Leiningen 和 Boot。 字面值...

weixin_33817333的博客 208

Shell脚本处理JSON数据:3种高效提取键值对的实战方法(附避坑指南)

本文系统介绍了在Shell脚本中高效处理JSON数据的三种实战方法:首选专用工具jq进行精准解析,其次优化正则与文本处理以应对无jq环境,最后介绍调用Python等外部解释器的混合模式。文章重点剖析了每种方法的适用场景、核心技巧与常见陷阱,并提供了详细的避坑指南,旨在帮助开发者根据环境选择最稳健的JSON处理方案,提升脚本的可靠性与可维护性。

jenkins8butler的博客 436

PyGrok 使用指南

PyGrok 使用指南 项目介绍 PyGrok 是一个基于 Python 的库,灵感源自 Jordan Sissel 开发的 Grok,旨在简化字符串解析过程,特别是在处理日志文件和结构化/非结构化数据时。它提供了一种更直观的方法来匹配模式和提取信息,避免了编写复杂的正则表达式。PyGrok 支持多种预定义的模式如 WORD, NUMBER, IP, HOSTNAME, 等,并允许用户自定义模式。...

gitblog_00033的博客 479

aviator使用示例

aviator

qq_37487520的博客 2009

Roc 编译器的嵌套异构列表类型检查:深入解析 can_nested_heterogeneous_lists 快照测试

Roc 是一门快速、友好的函数式语言,其编译器采用 Hindley–Milner 类型推断,并且**不允许异构列表**:同一个列表内的所有元素必须属于同一类型。本文以仓库中的编译快照测试 `can_nested_heterogeneous_lists` 为核心,逐段解剖 Roc 编译器在遇到嵌套异构列表字面量 `[[1, "hello"], [2, 3]]` 时,从词法分析、语法解析、类型检查到诊

gitblog_00805的博客 425

Roc 编译器数字字面量越界检查剖析:从 can_list_number_doesnt_fit 快照看 “Invalid Number“ 诊断链路

Roc 语言(A fast, friendly, functional language)的编译器在类型推断阶段会对数字字面量做严格的取值范围校验:当一个字面量无法放入上下文推断出的数字类型时,编译器会报出 "Invalid Number" 运行时错误级诊断。本篇文章以仓库中的编译器快照测试文件 [test/snapshots/can_list_number_doesnt_fit.md](http

gitblog_00953的博客 772

H5GG 实战指南:iOS 内存修改引擎的 JavaScript API 与 HTML5 界面开发

H5GG 是一个基于 iOS 的内存修改引擎(Mod Engine),以 JavaScript API + HTML5 UI 为核心,向脚本作者提供了一套与 Android GameGuardian 的 Lua 接口类似、但参数风格不同的 `h5gg` 引擎对象。本文以仓库官方文档([README.md](https://link.gitcode.com/i/b7b31725e30d32eddcb

gitblog_00584的博客 155
上一篇: clojure-学习资料汇总
下一篇: clojure-基本语法-字符串类型
Dead_Knight
博客等级 码龄19年 6粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值