算法- 解释roundToNextSignificant(double number)

问题描述

解释roundToNextSignificant(double number)
/**
* rounds the given number to the next significant number
*
* @param number
* @return
*/
public static float roundToNextSignificant(double number) {
final float d = (float) Math.ceil((float) Math.log10(number < 0 ? -number : number));
final int pw = 1 - (int) d;
final float magnitude = (float) Math.pow(10 pw);
final long shifted = Math.round(number * magnitude);
return shifted / magnitude;
}
谁能给我解释一下这个函数里的每句话是什么意思,已经这个函数是干什么的?

解决方案

给定一个数字,求它的数量级最接近的10^n数。

时间: 2024-09-10 14:13:11

算法- 解释roundToNextSignificant(double number)的相关文章

java-求关于图片裁剪的底层算法解释

问题描述 求关于图片裁剪的底层算法解释 根据鼠标点击位置得到裁剪范围,然后把指定范围裁剪出来.从底层来看,就是输出指定范围的数据.拿jpg为例,jpg是个压缩格式,经过了游程编码和哈夫曼树,算法是怎么找到鼠标点击位置是在图像数据的哪里?怎么确定的指定范围对应的图形数据?我看了一些裁剪的源码,但是没有看懂......求大神帮忙解答!! 解决方案 自己顶下--求解答啊求解答

Java数组到HashMap之算法解释

一.数组是什么? 忘了在哪本书里曾看到过类似这样的一句话"所有的数据结构都是数组的演化",想想其实是有道理的,因为计算机的内存其实就是线性的存储空间. Java示例代码: int[] array = new int[5] 忽略对象头信息和数组长度信息,JVM执行时会在堆中分配20个字节的内存空间,看起来就是这样的: 这样的数据结构可以很方便地通过数组下标存取数据,但在查找时需要遍历数组,平均时间复杂度为O(n/2). 当数据量很大或者查找操作频繁的时候,这样的遍历操作几乎是不可接受的.

从数组到 HashMap 之算法解释

一.数组是什么? 忘了在哪本书里曾看到过类似这样的一句话"所有的数据结构都是数组的演化",想想其实是有道理的,因为计算机的内存其实就是线性的存储空间. Java示例代码:int[] array = new int[5] 忽略对象头信息和数组长度信息,JVM执行时会在堆中分配20个字节的内存空间,看起来就是这样的: 这样的数据结构可以很方便地通过数组下标存取数据,但在查找时需要遍历数组,平均时间复杂度为O(n/2). 当数据量很大或者查找操作频繁的时候,这样的遍历操作几乎是不可接受的.那

大数据等最核心的关键技术:32个算法

合并查找算法(Union-find)--给定一组元素,该算法常常用来把这些元素分为多个分离的.彼此不重合的组.不相交集(disjoint-set)的数据结构可以跟踪这样的切分方法. 奥地利符号计算研究所(Research Institute for Symbolic Computation,简称RISC)的Christoph Koutschan博士在自己的页面上发布了一篇文章,提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的算法,以下是这次调查的结果,按照英文名称字

JAVA实现简单抢红包算法(模拟真实抢红包)_java

闲来无事,最近项目需求要写出用户登录首页来发现金红包,没有限额.我就自己稍微计算了一下如果有限额该怎么写.觉得这样与微信红包差不多.等项目需求完成以后.正好来博客贴一下我自己写的拆红包算法.个人觉得这个算法比较模拟现实抢红包规则.废话少说.先贴代码; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.ut

ORACLE NUMBER类型内部实现

先来研究NUMBER类型的数字回推算法 类型 <[长度]>,符号/指数位 [数字1,数字2,数字3,......,数字20] 1.长度类型没什么号说的 2.符号位,这个需要说一下 The sign bit, which is the high order bit (128) 按照文档的说法这个判断方法是和128进行最高位按位与出来的,如果 这位小于128则是负数,我们使用127试试吧 128的二进制为1000 0000  127的二进制为0111 1111 最高位1&0=0 则代表他是

字符串匹配的KMP算法

字符串匹配是计算机的基本任务之一. 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一.它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth. 这种算法不太容易理解,网上有很多解释,但读起来都很费劲.直到读到Jake Boxer的文章,我才真正理解这种算法.下面,我用自己的语言

蚁群算法小程序(C/C++语言实现)(一)

算法解释: 程序开始运行,蚂蚁们开始从窝里出动了,寻找食物:他们会顺着屏幕爬满整个画面,直到找到食物再返回窝. 其中,'F'点表示食物,'H'表示窝,白色块表示障碍物,'+'就是蚂蚁了. 预期的结果:各个蚂蚁在没有事先告诉他们食物在什么地方的前提下开始寻找食物.当一只找到食物以后,它会向环境释放一种信息素,吸引其他的蚂蚁过来,这样越来越多的蚂蚁会找到食物!有些蚂蚁并没有象其它蚂蚁一样总重复同样的路,他们会另辟蹊径,如果令开辟的道路比原来的其他道路更短,那么,渐渐,更多的蚂蚁被吸引到这条较短的路上

字符串匹配与KMP算法实现

字符串匹配问题 字符串匹配问题即在匹配串中寻找模式串是否出现, 首先想到的是使用暴力破解,也就是Brute Force(BF或蛮力搜索) 算法,将匹配串和模式串左对齐,然后从左向右一个一个进行比较, 如果不成功则模式串向右移动一个单位,直到匹配成功或者到达匹配串最后仍然不成功,返回失败. 很明显,这种算法有很多的地方可以优化,假设要搜索的串为S,长度为n,要匹配的串为M,长度为m,时间复杂度为O(nm). 几个优化的字符串匹配算法 (1)Boyer-Moore算法 (2)Rabin-Karp算法