You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Haskell计算负整数的平方根?

如何用Haskell计算负整数的平方根?

Haskell标准库的sqrt函数只支持非负实数,要计算负整数的平方根,得用复数类型来处理虚数结果,下面是具体方法:

方法1:使用Data.Complex模块处理复数

首先导入复数模块,然后利用复数版的sqrt函数直接计算:

import Data.Complex

-- 定义函数计算负整数的平方根
sqrtNegativeInt :: Int -> Complex Double
sqrtNegativeInt n = sqrt (fromIntegral n :+ 0)

示例用法

在GHCi里测试:

> sqrtNegativeInt (-4)
0.0 :+ 2.0
> sqrtNegativeInt (-25)
0.0 :+ 5.0

这里:+是Haskell复数的构造器,格式为实部 :+ 虚部,结果0.0 :+ 2.0就对应数学里的2i。

方法2:手动构造虚数结果

如果你不想依赖复数的sqrt实现,也可以直接计算虚部:

sqrtNegativeInt' :: Int -> Complex Double
sqrtNegativeInt' n = 0 :+ sqrt (fromIntegral (abs n))

这个逻辑更直观:负整数n的平方根是0 + i*√|n|,直接构造对应的复数即可。

额外说明

如果你不需要完整的复数类型支持,也可以返回一个元组来表示虚数结果,比如:

sqrtNegativeIntTuple :: Int -> (Double, Double)
sqrtNegativeIntTuple n = (0.0, sqrt (fromIntegral (abs n)))

但复数类型的优势在于它支持后续的复数运算(比如加减乘除),更适合需要处理复杂复数操作的场景。

内容的提问来源于stack exchange,提问作者bhadra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:39:51