`

Flex——四舍五入函数

    博客分类:
  • flex
阅读更多
在AS3中,有四舍五入效果的方法有Math.round方法和Number.toFixed方法,但这2个方法的效果都不好,有缺陷。

例如:

Math.round(21.45),输出了21,但正确的四舍五入是22。

21.4445.toFixed(2),输出了21.44,正确应该是21.45。

这对于金额等敏感的数字是不允许的。

自定义四舍五入算法
public static function ToFixed(value:Number, digits:uint = 0):String
{
    var str:String = value.toString();
    var index:int = str.indexOf(".");
    var strInt:String = str;
    var strDec:String = "";
    if(index>0)
    {
        strInt = str.substr(0, index);
        strDec = str.substr(index+1, digits);
    }
    while(strDec.length < digits)
    {
        strDec += "0";
    }
    var integer:int = int(strInt+strDec);
   
    if(index>0)
    {
        var nums:Array = new Array();
        var dec:String = str.substr(index+1+digits);//取舍小数部分
        for(var i:int=0;i<dec.length;i++)
        {
            nums.push(int(dec.charAt(i)));//拆分每个数字
        }
        var n1:int;
        var n2:int;
        while(nums.length>1)
        {
            n1 = nums.pop();
            if(n1>4)
            {
                n2 = nums[nums.length-1]+1;
                nums[nums.length-1] = n2;
            }
        }
        if(nums.length && nums[nums.length-1]>4)
            integer++;
    }
   
    str = integer.toString();
    if(digits==0)
        return str;
    while(str.length<strInt.length+strDec.length)
    {
        str = "0"+str;
    }
    return str.substr(0, str.length-digits) + "."+ str.substr(str.length-digits);
}

测试结果:

ToFixed(21.4, 2), 输出"21.40"
ToFixed(21.45, 2), 输出"21.45"
ToFixed(21.45, 0), 输出"22"
ToFixed(21.0, 0), 输出"21"
ToFixed(21.445, 2), 输出"21.45"
ToFixed(21.4445, 2), 输出"21.45"
ToFixed(21.4444, 2), 输出"21.44"
ToFixed(2974.3600000000006, 2), 输出"2974.36"

ToFixed(31282.999999999998, 2), 输出"31283.00"

ToFixed(31282.059999999998, 2), 输出"1282.06"

ToFixed(0, 2), 输出"0.00"

ToFixed(0.0000, 2), 输出"0.00"

ToFixed(0.0, 2), 输出"0.00"

ToFixed(0.01, 2), 输出"0.01"

ToFixed(0.059999999998, 2), 输出"0.06"

分享到:
评论

相关推荐

    Flex实践——Datagrid的打印预览与打印

    这个主题聚焦于Flex中的一个关键组件——Datagrid,以及如何实现它的打印预览和打印功能。Datagrid是Flex中用于展示数据集的常用控件,常用于表格形式的数据展示和操作。 首先,我们要理解Flex Datagrid的基础知识...

    FLEX入门篇——日期的格式化

    本文将围绕“FLEX入门篇——日期的格式化”这一主题,深入探讨如何在Flex中处理和格式化日期。日期格式化在任何应用程序中都是常见的需求,尤其是在展示或存储用户友好的时间信息时。 首先,我们要了解Flex中处理...

    Flex第一步——基于ActionScript 3

    本篇内容将深入探讨“Flex第一步——基于ActionScript 3”,这对于初学者来说是一份极具价值的学习资料。 首先,我们需要了解ActionScript 3。ActionScript是Flash平台的核心语言,而ActionScript 3是其最新版本,...

    Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版

    Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版 release 2.3.6.0 --新增功能:报表编辑器支持打开/报表本地文件功能 --新增功能:单元格垂直合并 --新增功能:报表编辑器,标题行支持单个和多个单元格...

    Flex:Web报表引擎——MyReport 2.3.0.0 + 免Flex开发集成版

    Flex:Web报表引擎——MyReport 2.3.0.0 + 免Flex开发集成版 --新增功能:重新设计表达式解析引擎,支持更多函数,运算符,支持运算符函数递归嵌套 --新增功能:重新设计表达式编辑器 --新增功能:新增字体颜色设置...

    Flex从入门到实践——源代码(2,5,6,7章)

    你还将了解ActionScript,它是Flex编程的核心语言,以及变量、函数、数据类型等基本概念。此外,还会接触Flex的事件处理机制,理解如何通过事件监听器来响应用户交互。 第5章:组件篇 此章节深入讲解了Flex中的组件...

    flex立方体旋转

    首先,我们要了解Flex中的核心概念——Flex布局。Flex布局允许开发者创建复杂的用户界面,并自动调整其大小和位置以适应不同的屏幕尺寸和分辨率。在这个“立方体旋转”特效中,我们主要利用了Flex的容器和组件系统,...

    flex和javascript交互例子

    标题"flex和javascript交互例子"指向了这个主题的核心——如何在Flex应用中调用JavaScript函数,以及反过来在JavaScript中调用Flex的方法。这种技术通常被称为“Bridge”或“跨域通信”。 在Flex中,我们可以使用`...

    PLD设计技巧——提高FLEX器件的系统速度

    FLEX系列器件基于查找表(LUT)架构,每个LUT可以实现任意4输入或6输入逻辑函数。这种架构提供了高度的灵活性,但也可能导致速度性能的下降,因为信号需要通过多个级联的查找表才能完成逻辑运算。因此,优化LUT使用...

    Flex4.0中文API

    此外,Flex 4.0还引入了Graphical User Interface(GUI)构建的新概念——Gumbo,后来被称为Flex 4。Gumbo引入了新的组件库,如s:Label、s:Button等,这些组件具有更现代的外观和更多的自定义选项。同时,Flex 4.0...

    flex组件,功能强大的下拉框

    在本项目中,我们关注的是一个特定的Flex组件——"功能强大的下拉框"。这个自编的Flex下拉框组件设计用于提供丰富的功能,如多级级联选择,这在数据层级结构复杂的应用场景中尤为有用。 1. **Flex布局基础** Flex...

    Flex从入门到实践——源代码(15,16,17章)

    Flex是Adobe公司开发的一种用于构建富互联网应用(RIA)的框架,主要基于ActionScript和MXML语言。这个压缩包文件包含的源代码可能是对《Flex从入门到实践》这本书的第15、16和17章的学习示例,旨在帮助读者通过实际...

    flex-超好的flex学习资料

    为了使读者快速上手,书中提供了首个Flex项目——“HelloWorld”的创建步骤,通过这个简单的实例,读者可以初步了解Flex项目的结构,以及如何编写基本的Flex代码,实现界面元素的布局和事件响应。 三、Flex组件与...

    FLEX4动画特效

    Flex4引入了新的动画模型——Timeline Animation和Effect Framework,使得开发者可以更灵活地控制动画的时间线、速度曲线、缓动函数等。 Timeline Animation允许开发者在时间线上直接编辑动画关键帧,类似于传统...

    Flex的通信方式(三)——HTTPService_1

    Flex是Adobe公司开发的一款用于构建富互联网应用(RIA)的框架,它主要使用ActionScript编程语言和MXML标记语言。在Flex中,与服务器进行数据交互是应用的重要部分,而HTTPService是Flex提供的一种用于与HTTP服务器...

    编译原理(FLEX&bison).zip

    《编译原理——深入理解FLEX与BISON》 编译原理是一门深入探讨计算机语言翻译过程的学科,它涉及到词法分析、语法分析、语义分析等多个阶段。在实际编程工作中,FLEX和BISON是两个常用的工具,用于实现编译器的词法...

    Flex4 AIP 中文说明

    2. **图形渲染**:Flex4 引入了Graphical Element(GE)和Visual Element(VE)概念,使用新的图形渲染层——StageVG,提高了图形绘制的性能。开发者可以使用ActionScript直接操作像素,实现复杂的图形和动画效果。 ...

    flex个人财务软件及源码

    在个人财务软件中,Flex的优势在于其优秀的可视化设计工具——FlashBuilder,它提供了直观的拖放界面和代码编辑功能,使得开发人员能快速构建用户界面。 描述中提到,此软件适用于Flex3和Flex4,这意味着它兼容两种...

    Flex 3 Cookbook[中文版].pdf

    - **Flex 的组成**:一个典型的 Flex 应用程序由两部分组成——ActionScript 和 MXML。从 Flex 3 开始,ActionScript 成为了一个完全面向对象且类型安全的语言,并遵循 ECMAScript 标准。 - **MXML**:这是一种标记...

Global site tag (gtag.js) - Google Analytics