将十进制数转换为分数 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 <= 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. 密钥格式化