精华内容
下载资源
问答
  • 因为 double 小数位数是有限,如果 log( x) ,log (y) 是无限循环小数,,那么精度丢失 很厉害,所以涉及到可能有无限循环小数比较大小的时候,1、不要用第三变量去赋值,直接比较就行...

    double a;

    double b


    a = log(x);

    b = log(y);


    然后比较 a   和 b 的大小;

    这样写看似没有问题  ,其实有很致命的 bug, 做题的时候很容易出错。

    因为 double  的小数位数是有限的,

    如果  log( x)  ,log (y)  是无限循环小数,,那么精度丢失的 很厉害


    所以涉及到可能有无限循环的小数比较大小的时候,

    1、不要用第三变量去赋值,直接比较就行

    比如 : log (x) > log(y) ?



    2、用 long double 可以一定程度上缓解精度丢失的程度

    (long double)a = log(x);

    (long double )b = log(y);



    展开全文
  • float类型数据不能直接比大小,需要做一些处理才行,这是由计算机采用二进制方式存储数据导致。 十进制整数转二进制: 十进制数除2,取余,从最后一个余数到第一个余数得到数,即为转换后得到二进制值。 ...

    float类型数据不能直接比大小,需要做一些处理才行,这是由计算机采用二进制的方式存储数据导致的。

    十进制整数转二进制:

    十进制数除2,取余,从最后一个余数到第一个余数得到的数,即为转换后得到的二进制值。

    13的二进制为1101

    十进制小数转二进制:

    小数部分乘以2,取整数部分,从第一个到最后一个整数,得到的数,即为小数部分的二进制值。但是小数部分可能会出现无限循环的情况,所以float类型的数据不应该直接用来比较大小,尤其是比较是否相等。

    0.3的二进制为0.0100

     

    展开全文
  • 圆周率大家都很熟悉,...以前人计算圆周率,是要探究圆周率是不是循环小数,自从1761年兰伯特证明了圆周率是无理数(无限不循环小数,不能写作两整数之)之后,我们可以说没必要再计算了。但有趣是人类社会却一...

    圆周率大家都很熟悉,我们一般使用π或者3.14来代替。在日常生活中,圆周率有十几位小数已经足够了。如果以39位精度的圆周率值,来计算可观测宇宙(observable universe)的大小,误差还不到一个原子的体积。

    b15aa8f5557610b378862567b80653c0.png

    以前的人计算圆周率,是要探究圆周率是不是循环小数,自从1761年兰伯特证明了圆周率是无理数(无限不循环小数,不能写作两整数之比)之后,我们可以说没必要再计算了。但有趣的是人类社会却一直没有放弃圆周率的计算。到目前为止,圆周率已经被算到31.4万亿位,那么科学家们如此执着地计算圆周率,到底是为了什么呢?

    2019年3月14日,谷歌宣布日裔前谷歌工程师爱玛(EmmaHarukaIwao)在谷歌云平台的帮助下,计算到圆周率小数点后31.4万亿位,准确的说是31415926535897位,比2016年创下的纪录又增加数万亿位。对π这样无限的数字做出如此计算有意义吗?

    19c6f6e36f341a171b4fa63c6456487e.png

    有些观点认为圆周率本身就是一个看似不规律但实际上有巧合的数字,非常神秘。而且圆周率的精准程度体现了一个国家的计算水平,所以很多国家都会用超级计算机来计算圆周率后面的无限小数。当然光凭这个原因是不足够的,有些人认为圆周率和圆的关系密不可分,而圆形的升华就是球体。

    575756aee1c358d8bb099703c0ab66db.png

    在我看来,现在对圆周率的计算象征意义大于实际意义。圆周率的计算的确可以体现一个国家的计算水平,但是想要验证计算水平,方法是多种多样的。其具有的象征意义,一是可以打破世界纪录,毕竟打破极限也是人类热爱的挑战;二是具有纪念和致敬意义,就像苹果对于图灵的致敬,对于圆周率计算的突破是对那些在圆周率的道路上的前辈的纪念和致敬;三是个人原因,对于圆周率的喜爱,比如我就喜欢0和5这两个数字。

    展开全文
  • 右侧更小数

    2020-01-10 16:09:15
    最容易想到两重循环暴力遍历,通过遍历整个数组,比较每个数与其之后的大小,返回更小个数。由于是算法题更注重本身优化。 在学习了网上大佬们题解分析以及通过自身总结后,推荐二叉树。 二叉树特性:...

    第一次博客就当是记笔记吧

    本人小白,今天学习了一道关于二叉树的算法,复习一下。

    题目

    在这里插入图片描述
    求给定任意数组对于每个nums[i]返回其右侧比它更小的数的个数counts[i]。

    解决思路

    最容易想到两重循环暴力遍历,通过遍历整个数组,比较每个数与其之后的数的大小,返回更小个数。由于是算法题更注重本身的优化。

    在学习了网上大佬们的题解分析以及通过自身总结后,推荐二叉树。

    1. 二叉树特性:左边节点值小于等于当前节点,右边节点大于当前节点,该特性优化了算法,使得复杂度降低,避免超时。
    2. 在二叉树结构基础上,对于nums[]数组采用倒序插入,即在示例中对于[5,2,6,1]来说,第一个插入的节点的值为1,依次从右往左插入。这样的好处在于对每一个即将要插入的数,它的右侧的所有数都已经在二叉树中,在插入的同时,已经计算出右侧比它更小数的个数。

    具体实现

    1.构建二叉树

    (C++代码编写)

    struct BTNode{    
        int val;    
        int leftSub;//左子树结点数
        BTNode* left;//左子树
        BTNode* right;//右子树    
        BTNode (int x) : val(x), leftSub(0), left(nullptr),  right(nullptr){
    };
    1. 这里的nullptr替代NULL(NULL在处理时可能被认为0而出错)
    2. 定义变量leftSub记录左子树的结点个数

    2.定义插入树结点函数

    BTNode* Insert(BTNode* root, BTNode* insertNode, int &Count){
        if (!root){
            return insertNode;
        }
        else if (insertNode->val <= root->val) {
            root->leftSub++;
            root->left = Insert(root->left, insertNode, Count);
        }
        else{
            Count += root->leftSub + 1;
            root->right = Insert(root->right, insertNode, Count);
        }
        return root;
    }
    • root为当前结点,insertNode为插入结点,Count记录右侧比它小的数的个数
    • root为空,则创建根结点;若插入值小于等于当前结点值,它将插入到当前结点的左子树,root->leftSub++当前结点的左子树结点个数+1;若插入值大于当前结点值,它将插入到当前结点的右子树,那么计算插入结点值的右侧有多少个比它更小的数,显然,它的个数=当前结点左子树结点个数+1即Count+=root->leftSub+1。

    主函数设计

    vector<int> countSmaller(vector<int>& nums) {
        vector<int> counts(nums.size());
        if (nums.empty())
            return counts;
        BTNode* root = nullptr;
        for (int i = nums.size() - 1; i >= 0; i--) {
            int count = 0;
            root = Insert(root, new BTNode(nums.at(i)), count);
            counts.at(i) = count;
        }
        return counts;
    }
    • 给出一个for循环遍历(从后往前)依次插入,Insert插入函数见上,最后返回counts[]。
    源代码
    struct BTNode{
        int val;
        int leftSub;
        BTNode* left;
        BTNode* right;
        BTNode (int x) : val(x), leftSub(0), 
                left(nullptr),  right(nullptr) {}
    };
    class Solution {
    public:
        vector<int> countSmaller(vector<int>& nums) {
            vector<int> counts(nums.size());
            if (nums.empty())
                return counts;
            BTNode* root = nullptr;
            for (int i = nums.size() - 1; i >= 0; i--) {
                int count = 0;
                root = Insert(root, new BTNode(nums.at(i)), count);
                counts.at(i) = count;
            }
            return counts;
        }
    private:
        BTNode* Insert(BTNode* root, BTNode* insertNode, int &Count){
            if (!root){
                return insertNode;
            }
            else if (insertNode->val <= root->val) {
                root->leftSub++;
                root->left = Insert(root->left, insertNode, Count);
            }
            else{
                Count += root->leftSub + 1;
                root->right = Insert(root->right, insertNode, Count);
            }
            return root;
        }
    };
    

    总结/感想

    本题用了二叉树的模型以及后插法非常精妙,本题还引申出一些排序问题和树结构应用问题。刚开始上码路,有点方。有不对的地方还请指教。。。

    感谢您的阅读!
    在这里插入图片描述

    展开全文
  • 冒泡排序 冒泡排序是通过一个for循环嵌套另一个for...在内部for循环中,通过比较当前数与下一位数,实现大数不断沉底或小数不断上升过程,优化方案如减少内部for循环次数,根据降序或升序对判断条件进行调整减去i
  • 然后和后面每个数比较,如果发现有当前数更小数,就重新确定最小数,并得到下标 当遍历到数组最后时,就得到本轮最小数和下标 交换 1.第一轮排序 public class SelectSort { public static void main...
  • 选择排序

    2020-04-09 10:21:26
    每一次排序都是一个循环 ,先假定当前数为最小数,然后和后面每个数进行比较,若存在当前数更小数,就将更小数确定为新小数并得到下标 交换 代码实现 import java.util.Arrays; public class 选择排...
  • 2.2 然后和后面每个数进行比较,如果发现有当前数更小数,就重新确定最小数,并得到下标 2.3 当遍历到数组最后时,就得到本轮最小数和下标 2.4 交换 [代码中再继续说 ] 【代码】 public class SelectS
  • Viewport不局限于浏览器可视区域的大小,可能浏览器可视区域要大,也可能浏览器可视区域要小。 媒体查询 CSS媒体查询允许开发者基于浏览网站设备特性来应用不同样式申明,最常用特性是视口宽度。 ...
  • 《有理数定义和分类(答案)》3、《培优专题:无限循环小数化分数》4、《数轴》 《数轴(答案)》5、《培优专题:数轴题型---距离问题》6、《相反数》《相反数(答案)》7、《绝对值(基础知识)》《绝对值(答案)》8、...
  • 思路: 原始数组 : 101, 34, 119, 1 第一轮排序 : 1, 34, 119, 101 ...2.2 然后和后面每个数进行比较,如果发现有当前数更小数,就重新确定最小数,并得到下标 2.3 当遍历到数组最后时,就得...
  • 操作方法: 外层正常for循环遍历,到n-1位,内层for循环相邻两个数比较大小,小数在左边,大数在右边. 第一趟外层循环会把最大数依次比较互换位置,逐渐挪动到最后,比如例子里面元素6(虽然6已经在最后一位了) 第二趟外层...
  • 输入N个数,使用循环和scanf函数,而所谓的比大小就只是像打擂台一样,不断比较,并且替换而已。 问题 Description 输入一个正整数N和N个整数,找出这N个数中的最大数和最小数。 Input 输入一个正整数N(1≤N≤100)...
  • Class 1 -- 知识点串讲

    2017-07-15 21:49:00
    浮点数比大小: (int)a=1 (实际上)a=1.00001 b=1 b=0.99999 然而比大小时精度不需要那么高,也就是说可以忽略极小误差。这是我们需要设置eps(ε)。一般是保留位数+3:比如,保留三位小数,eps=1e...
  • 最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了。 继续重复上述过程,依次将第2.3...n-1个最小数排好位置。 比如对这个数组进行排序 第一次循环换呢4和5进行比较 [4,5],7,3,2,1 不用交换 4,[5,7],...
  • 刷题总结

    2020-01-20 11:12:44
    1.数组开空间往大开 2.测试用例通常都是循环输入。...比大小。 6.大整数注意使用long long 结构,避免使用 int 结构。 7.闰年判断。能被400整除是闰年。或者能被4整除但不能被100整除也是闰年。 ...
  • 小数分隔符用来将一个数字整数部分与小数部分分隔开。其格式是 <decimal_character><group_separator>。 值范围: 任何单字节字符, '+', '-', ', '>' 除外。 默认值: 从 NLS_TERRITORY 中获得 nls_sort: 说明: ...
  • 一、思路 原始数组:101,34,119,1 第一次排序:1 ,34,119,101 第二次排序:1,34 ,119,...(2)然后和后面每个数进行比较,如果有发现当前数更小数,就重新确定最小数,并得到下标; (3)当遍历到数组最后时...
  • Java冒泡排序

    2021-02-15 13:59:49
    那么怎么知道泡泡轻重(也就是数字的大小),就必须让第一个泡泡和第二个泡泡进行比较(第一个数和第二个数进行比较),如果第一个泡泡第二个沉(第一个数第二个数大),就让第一个泡泡沉下去,第二个上来(第...
  • 而且集合元素可以是任意对象,操作也数组灵活多。 使用集合时,必须注意集合生命期问题。如果有两个集合 L1 和 L2,使用 了 L1=L2; 后,只要 L2 生命期没有终结,它以后变化就可能会影响到 L1 数值。...
  • 每种编程语言学到数组时候,都会讲到排序算法,当时学C语言时候,...从第一个数开始,如果第二个数大就交换位置,然后跟第三个数字进行比较大小,交换位置等。  举例一下,有数组[2,4,3,5,1]  第一次循环:...
  • 面试题33:把数组排成最小数:首先将数组中数字全部转换为字符串存储在一个新数组中,然后比较每两个数字串拼接mn和nm的大小,若mn<nm,则m更小,反之n更小,然后把更小数放入一个新List中,最后输出...
  • javascript入门笔记

    2018-05-15 15:01:07
    只做整数运算,如果是小数的话,则去掉小数位再运算 2、位运算 1、按位 与 :& 语法 :a & b 特点 :将 a 和 b 先转换为二进制,按位比较,对应位置的数字都为1的话,那么该位的整体结果为1,否则就为0 ex:5 ...
  • 5.5 确定数组的大小 184 5.6 多维数组 185 5.7 多维数组初始化 187 5.8 设计一个程序 191 5.8.1 问题 192 5.8.2 分析 192 5.8.3 解决方案 193 5.9 小结 200 5.10 习题 200 第6章 字符串和文本应用 201 ...
  • 5.5 确定数组的大小 184 5.6 多维数组 185 5.7 多维数组初始化 187 5.8 设计一个程序 191 5.8.1 问题 192 5.8.2 分析 192 5.8.3 解决方案 193 5.9 小结 200 5.10 习题 200 第6章 字符串和文本应用 201 ...
  • 精易模块[源码] V5.15

    2015-03-21 22:03:37
    1、修复“文本_取中间_批量”获取大数据崩溃BUG,改为循环方式获取,大数据不建议用此命令(吃CPU)。 2、添加“文本_朗读”是否使用百度语音引擎参数,为空时默认使用微软语音引擎。 3、改善“文本_加密”与“文本_...
  • 修改核心支持库,解决用“播放音乐()”播放“音频采样大小为24位”WAV文件时产生噪音BUG。 4. 修改编译器,可以为编译出EXE、DLL添加版本信息(通过“程序配置”设定)。 5. 修改集成开发环境,自动记忆非...
  • 交换空间大小:3.25GB 硬盘空间:10GB  安装 1. 安装程序成功下载,将会得到如下2个文件: 解压文件将得到database文件夹,文件组织如下: 点击setup.exe执行安装程序,开始安装。 2. 点击安装程序将会出现...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

循环小数的比大小