当前位置: 首页 > 面试题库 >

Java有钳位功能吗?

东门清夷
2023-03-14
问题内容

假设我有一个value,我通常会执行此操作以将其“钳位”到一个范围,这里是range
[0..1]。也就是说,如果它低于范围起点,则将其增大到范围起点,高于范围终点,将其减小到范围终点。

clampedValue = Math.max(0, Math.min(1, value));

是否有内置功能可钳位到一定范围?


问题答案:

研究了另一个答案中提供的通用钳位方法后,值得注意的是,此方法对原始类型有装箱/拆箱的注意事项。

public static <T extends Comparable<T>> T clamp(T val, T min, T max) {...}

float clampedValue = clamp(value, 0f, 1f);

这将使用Float包装器类,导致3个框操作,每个参数一个,对返回类型1个取消框操作。

为了避免这种情况,我只会坚持写长篇幅,或者对想要的类型使用非泛型函数:

public static float clamp(float val, float min, float max) {
    return Math.max(min, Math.min(max, val));
}

然后,只需为所需的每种原始类型重载相同的方法即可。



 类似资料:
  • 使用MapView的方法实现定位功能,可以获取坐标和当前地址信息(可以获取到街道信息),比使用CLLocationManager精准。 [Code4App.com]

  • 问题内容: 我需要一个地图功能。Java中已经有类似的东西了吗? (对于那些想知道的人:我当然知道我自己如何实现这个琐碎的功能…) 问题答案: 从Java 6开始,JDK中没有函数的概念。 番石榴具有功能接口,但是该 方法提供了您所需的功能。 例: 输出: 如今,在Java 8中,实际上已经有一个map函数,因此我可能会以一种更简洁的方式编写代码:

  • 问题内容: 宏非常有用。 因此,我偶尔会抱怨Java和C#中缺少宏。宏允许我强制内联,但允许我对非宏代码进行代码管理。 是否有任何基于Java或C#的项目/产品有效地允许宏或指定行内扩展。 我在想类似的东西 @macro public void hello(int x){…} 或当我调用方法时,调用之前的@inline注释将使被调用方法内联。 或者,我是否应该知道我应该相信编译器为我做出最好的决定

  • 问题内容: 有人可以帮助我理解Java 如何工作。我有以下代码 但是在split函数中,我得到以下异常 问题答案: 当您键入时,它实际上是一个反斜杠(由于转义了Java字符串中的特殊字符)。 正则表达式还将反斜杠用作特殊字符,并且您需要使用另一个反斜杠对其进行转义。因此,最后,您需要传递as模式以匹配单个反斜杠。

  • 可以像 FFI 函数那样导入它们,使用特殊的rust-intrinsicABI。例如,如果在一个独立的上下文,但是想要能在类型间transmute,并想进行高效的指针计算,你可以声明函数: #![feature(intrinsics)] # fn main() {} extern "rust-intrinsic" { fn transmute<T, U>(x: T) -> U;

  • 支持各种几何体:点、线、面、标注、公告牌、立方体、球体、 椭球体、圆柱体、走廊(corridors)、管径、墙体 • 可视化效果包括:基于太阳位置的阴影、自身阴影、柔和阴影。 • 大气、雾、太阳、阳光、月亮、星星、水面。 • 粒子特效:烟、火、火花。 • 地形、模型、3d tiles模型的面裁剪。 • 对象点选和地形点选。 • 支持鼠标和触摸操作的缩放、渲染、惯性平移、飞行、任意视角、地形碰撞检测