将十进制数转换为分数 AS3

Posted

技术标签:

【中文标题】将十进制数转换为分数 AS3【英文标题】:Convert a decimal number to a fraction AS3 【发布时间】:2020-06-18 15:51:24 【问题描述】:

我正在尝试将小数转换为分数,例如,我写了诸如 var _pow:int = Math.pow(base,i) 之类的内容,如果 i 原来是一个负数,它将给出一个小数(例如: 3 ^ -2) 并且我目前正试图找到一种将 _pow 变成分数的方法(所以 _pow 超出 100)所以我尝试做 var _pow:int = Math.pow(base,i) * 100 这应该阻止它成为小数,但它没有显示在动态文本中,只有当i 为负数时才会发生这种情况

package
    import flash.display.*;
    import flash.events.MouseEvent;

    public class name_ extends MovieClip

        public function _name_()
            btn.addEventListener(MouseEvent.CLICK, input)

            base.restrict = "0-9\\.\\-";
            pow.restrict = "0-9\\.\\-";
            answer.multiline = true; 

        

        private function input(event:MouseEvent):void
            var pow  = pow.text;
            var base = base.text;
            var answerText:String = "";

            if(pow > 0)
                for(var i = 1; i <= pow; i++)
                     _pow = Math.pow(base,i);
                    answerText += ("\n" + base + " exposant(power) " + i + " = "+ _pow ); 
                    answer.text = answerText; 
                    

            else
                for(i = 1; i <= pow; i++)
                    var _pow:int = Math.pow(base,i) * 100           
                    answerText += ("\n" + base + " exposant(power) " + i + " = "+ _pow ); 
                    answer.text = answerText; //Dynamic text
                
            
        
    
 

【问题讨论】:

一个愚蠢的问题:您的代码允许pow 是分形的。如果你有 3.5 用于 base 和 -1.33 用于 pow,它应该返回什么? 我会这样做的一种方法是根据使用的小数位数将小数转换为分数,然后确定两个数字的最大公因数。比如 0.2 -> 2/10 -> 1/5... 0.25 -> 25/100 -> 1/4... 0.275 -> 275/1000 -> 11/40。从表面上看,这似乎并不难,但我不知道找到最大公因数有多难。 【参考方案1】:

您是否尝试过使用“if”语句?类似 if(i code.

您也可以尝试使用 Math.floor(要四舍五入的数字);或 Math.ceiling(要四舍五入的数字)

【讨论】:

它似乎不起作用(if 语句),我也尝试了我尝试 Math.ceil 的部分(它似乎也不起作用)for(i = 1; i &lt;= pow; i++) var _pow:int = Math.ceiling( Math.pow(base,i)) * 100 answerText += ("\n" + base + " exposant(power) " + i + " = "+ _pow ); answer.text = answerText; //Dynamic text 但它仍然给出输出相同的结果,即使使用 if 语句,它也不会显示在动态文本中,只有当 _pow 为正时才会显示 好吧,我只是重读了你的代码,“_pow”的声明是“pow”,它与 Math.pow(base, i) 的函数冲突。似乎您也有很多语法错误,但那些不应该让程序编译。这两行应该有 pow = _pow,并且还包括一个变量类型。 var pow = pow.text; var base = base.text;这一行您不需要声明变量,因为您已经在该函数中拥有。 var _pow:int = Math.pow(base,i) * 100 你可能不需要 * 100,除非它被限制为 2 位小数。 哦,废话,它成功了,我真的很感激你为我所做的一切,我真的很感激:),谢谢你帮助我解决我的问题

以上是关于将十进制数转换为分数 AS3的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 405. 数字转换为十六进制数(补码的问题) / 166. 分数到小数(模拟长除法) / 482. 密钥格式化

根据PHP中的分数四舍五入十进制数

进制转换,请将一个n进制的数转换成m进制的数,并输出.

十进制的分数如何转成二进制的?

求c语言将十进制数转换为16进制的函数

如何在R中将时间(mm:ss)转换为十进制形式