在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,以及如何实现它的打印预览和打印功能。Datagrid是Flex中用于展示数据集的常用控件,常用于表格形式的数据展示和操作。 首先,我们要理解Flex Datagrid的基础知识...
本文将围绕“FLEX入门篇——日期的格式化”这一主题,深入探讨如何在Flex中处理和格式化日期。日期格式化在任何应用程序中都是常见的需求,尤其是在展示或存储用户友好的时间信息时。 首先,我们要了解Flex中处理...
本篇内容将深入探讨“Flex第一步——基于ActionScript 3”,这对于初学者来说是一份极具价值的学习资料。 首先,我们需要了解ActionScript 3。ActionScript是Flash平台的核心语言,而ActionScript 3是其最新版本,...
Flex:Web报表引擎——MyReport 2.3.6.0 + 免Flex开发集成版 release 2.3.6.0 --新增功能:报表编辑器支持打开/报表本地文件功能 --新增功能:单元格垂直合并 --新增功能:报表编辑器,标题行支持单个和多个单元格...
Flex:Web报表引擎——MyReport 2.3.0.0 + 免Flex开发集成版 --新增功能:重新设计表达式解析引擎,支持更多函数,运算符,支持运算符函数递归嵌套 --新增功能:重新设计表达式编辑器 --新增功能:新增字体颜色设置...
你还将了解ActionScript,它是Flex编程的核心语言,以及变量、函数、数据类型等基本概念。此外,还会接触Flex的事件处理机制,理解如何通过事件监听器来响应用户交互。 第5章:组件篇 此章节深入讲解了Flex中的组件...
首先,我们要了解Flex中的核心概念——Flex布局。Flex布局允许开发者创建复杂的用户界面,并自动调整其大小和位置以适应不同的屏幕尺寸和分辨率。在这个“立方体旋转”特效中,我们主要利用了Flex的容器和组件系统,...
标题"flex和javascript交互例子"指向了这个主题的核心——如何在Flex应用中调用JavaScript函数,以及反过来在JavaScript中调用Flex的方法。这种技术通常被称为“Bridge”或“跨域通信”。 在Flex中,我们可以使用`...
FLEX系列器件基于查找表(LUT)架构,每个LUT可以实现任意4输入或6输入逻辑函数。这种架构提供了高度的灵活性,但也可能导致速度性能的下降,因为信号需要通过多个级联的查找表才能完成逻辑运算。因此,优化LUT使用...
此外,Flex 4.0还引入了Graphical User Interface(GUI)构建的新概念——Gumbo,后来被称为Flex 4。Gumbo引入了新的组件库,如s:Label、s:Button等,这些组件具有更现代的外观和更多的自定义选项。同时,Flex 4.0...
在本项目中,我们关注的是一个特定的Flex组件——"功能强大的下拉框"。这个自编的Flex下拉框组件设计用于提供丰富的功能,如多级级联选择,这在数据层级结构复杂的应用场景中尤为有用。 1. **Flex布局基础** Flex...
Flex是Adobe公司开发的一种用于构建富互联网应用(RIA)的框架,主要基于ActionScript和MXML语言。这个压缩包文件包含的源代码可能是对《Flex从入门到实践》这本书的第15、16和17章的学习示例,旨在帮助读者通过实际...
为了使读者快速上手,书中提供了首个Flex项目——“HelloWorld”的创建步骤,通过这个简单的实例,读者可以初步了解Flex项目的结构,以及如何编写基本的Flex代码,实现界面元素的布局和事件响应。 三、Flex组件与...
Flex4引入了新的动画模型——Timeline Animation和Effect Framework,使得开发者可以更灵活地控制动画的时间线、速度曲线、缓动函数等。 Timeline Animation允许开发者在时间线上直接编辑动画关键帧,类似于传统...
Flex是Adobe公司开发的一款用于构建富互联网应用(RIA)的框架,它主要使用ActionScript编程语言和MXML标记语言。在Flex中,与服务器进行数据交互是应用的重要部分,而HTTPService是Flex提供的一种用于与HTTP服务器...
《编译原理——深入理解FLEX与BISON》 编译原理是一门深入探讨计算机语言翻译过程的学科,它涉及到词法分析、语法分析、语义分析等多个阶段。在实际编程工作中,FLEX和BISON是两个常用的工具,用于实现编译器的词法...
2. **图形渲染**:Flex4 引入了Graphical Element(GE)和Visual Element(VE)概念,使用新的图形渲染层——StageVG,提高了图形绘制的性能。开发者可以使用ActionScript直接操作像素,实现复杂的图形和动画效果。 ...
在个人财务软件中,Flex的优势在于其优秀的可视化设计工具——FlashBuilder,它提供了直观的拖放界面和代码编辑功能,使得开发人员能快速构建用户界面。 描述中提到,此软件适用于Flex3和Flex4,这意味着它兼容两种...
- **Flex 的组成**:一个典型的 Flex 应用程序由两部分组成——ActionScript 和 MXML。从 Flex 3 开始,ActionScript 成为了一个完全面向对象且类型安全的语言,并遵循 ECMAScript 标准。 - **MXML**:这是一种标记...