- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在执行除以 0 时捕获异常,但是,无论实现如何,代码都没有显示任何实质内容,总是声称结果是“无穷大”(意思是,从我得到的来看,它只是执行了除法而忽略了其他一切)
这是什么原因,如何补救?
open System
type instruction =
| ADD
| SUB
| MUL
| SQR
| DIV
| PUSH of float
type stack = float list
exception BLEDNY_PROGRAM of (instruction * stack)
exception DivideByZeroException
let intInstr (x, y) =
match x, y with
| ADD, a::b::ys -> (b + a) :: ys : stack
| SUB, a::b::ys -> (b-a)::ys
| MUL, a::b::ys -> (b*a)::ys
| SQR, a::ys -> (a * a)::ys
| DIV, a::b::ys -> try (b/a)::ys with | :? System.DivideByZeroException -> (printf "Błąd: dzielenie przez zero"; ys)
| PUSH x, ys -> x::ys
| _ , _ -> raise (BLEDNY_PROGRAM(x, y));
let intpProg(is) =
let rec iPS = function
| ([],x::xs) -> x
| (i::is, xs) -> iPS(is, intInstr(i, xs))
iPS(is,[])
let il3 = [PUSH 3.0; PUSH 0.0; DIV];
let e = intpProg(il3)
printfn "%A" e
最佳答案
一个 float
在 F# 中是 64 位 IEEE 754 double-precision number .它们具有明确定义的 ±0、±infinity 和 NaN 值。
对于所有被零除的浮点数 ( except decimal ),一个 DivideByZeroException
不会抛出,而是使用类型的特殊表示。
> let ``+∞``, ``-∞`` = 1.0 / 0.0, -1.0 / 0.0;;
val ( -∞ ) : float = -infinity
val ( +∞ ) : float = infinity
Double.PositiveInfinity
.
int
、
long
、
uint
等)都会被零除。
关于F# 无法捕获 DivideByZeroException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60975739/
我试图在执行除以 0 时捕获异常,但是,无论实现如何,代码都没有显示任何实质内容,总是声称结果是“无穷大”(意思是,从我得到的来看,它只是执行了除法而忽略了其他一切) 这是什么原因,如何补救? ope
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
您好,当我尝试在 GridView 中运行以下代码时,我遇到了这个错误Attempted to divide by zero。 当发生错误而不避免被零除时,如何通过返回零作为除法结果来避免此错误。 代
这非常慢: try { x = k / y; } catch (DivideByZeroException) { } 这大约快了 5 倍: if (y > 0) x = k / y; 谁能告诉
在某些情况下,throw 可以避免的错误是个好主意吗? 我特别想到了 DivideByZeroException 和 ArgumentNullException 例如: double numerato
import java.io.IOException; import java.util.*; public class calling { public static String s; publi
所以我一直在尝试用 C# 编写一个程序,该程序返回给定数字的所有因数(稍后我将实现用户输入)。该程序如下所示: //Number to divide long num = 600851475143;
我在 VS2015 C# 交互中运行了以下代码片段,得到了一些非常奇怪的行为。 > double divide(double a, double b) . { . try . { .
为了防止C#中的DivideByZeroException,人们经常写这样的东西 double f(double x) { if (x != 0.0) return 1000.0/x; els
我有一个使用 LINQ-to-SQL 和 SQL Server CE 4 的应用程序。我知道这不是官方支持的,但我们已经使它工作,但以下异常(exception)。有时,我们会在尝试更新数据库中的一行
我用 C# 编写了一个简单的 divide 函数: private string divide(int a, int b) { return string.Format
这是一个与this fascinating question about detecting divide by zero exceptions at compile time相关的问题. 从 Eri
根据 http://msdn.microsoft.com/en-us/library/system.dividebyzeroexception.aspx只有 Int 和 Decimal 在将它们除以
我是一名优秀的程序员,十分优秀!