【发布时间】:2021-08-04 07:59:37
【问题描述】:
我很难找到要在线搜索的关键字。
我创建了一个具有安全数学函数的类。每个函数接受 2 个参数,并在通过断言评估后返回结果。
例子:
class SafeMath {
static add(x: number, y: number) {
let z: number = x + y;
assert(z >= x, 'ds-math-add-overflow');
return z;
}
static sub(x: number, y: number) {
let z: number = x - y;
assert(z <= x, 'ds-math-sub-underflow');
return z;
}
static mul(x: number, y: number) {
let z: number = x * y;
assert(y == 0 || z / y == x, 'ds-math-mul-overflow');
return z;
}
static div(x: number, y: number) {
let z: number = x / y;
assert(x > 0 || y > 0, 'ds-math-div-by-zero');
return z;
}
}
console.log(SafeMath.add(2,2)); // 4
console.log(SafeMath.sub(2,2)); // 0
console.log(SafeMath.mul(2,2)); // 4
console.log(SafeMath.div(2,2)); // 1
我的目标是让这些函数像这样工作,例如:
let balance0: number = 1;
let balance1: number = 1;
let amount0In: number = 10;
let amount1In: number = 10;
let balance0Adjusted: number = balance0.mul(1000).sub(amount0In.mul(3));
let balance1Adjusted: number = balance1.mul(1000).sub(amount1In.mul(3));
...函数将接收y 并将之前的数字用作x。
【问题讨论】:
-
1是一个数字,它没有mul方法。如果以let balance0: SafeNumber = new SafeNumber(1);开头,则可以在SafeNumber类中定义自己的方法。 -
顺便说一句,您是否要表示无符号整数? JS 对所有内容都使用浮点数,不会溢出。请注意您的
add和sub方法不适用于负整数。 -
对无符号整数更正。更正
add和sub故意不使用负整数。 -
好的,但是
x + y不是无符号整数的加法。
标签: javascript typescript deno