【问题标题】:When trying to print division, it converts fractions to decimals尝试打印除法时,它将分数转换为小数
【发布时间】:2017-08-18 03:16:02
【问题描述】:

我正在编写一个计算器,我试图打印除法方程的答案,但它却将分数转换为小数。 我正在运行 Lua 5.2.4

 print ("\n\tWhat math symbol will you use?") 
      ms = io.read()

-- Main function
 function TYPCALC() 

        --If user typed certain math symbols
  if (ms == "division") then

      print ("\n\tWhat number will be divided to?")
          local rn = io.read()

      print ("\n\tWhat will be dividing?")
          local ln = io.read()

          --convert users answers in to strings
          local cln = tonumber(ln)
          local crn = tonumber(rn)

          --do equasion
          io.write (ln / rn)
       end;         

  end ;

    TYPCALC()

【问题讨论】:

  • 没有内置分数类型。
  • 尝试使用string.format('%.2f", ln / rn)

标签: lua floating-point division fractions rational-numbers


【解决方案1】:

Lua 没有分数类型。您必须自己计算分子和分母。然后打印出来。

如果您只是打印或写入 (number/number2),则将首先计算该表达式,生成一个十进制数。然后该函数将使用该号码的本地副本。

local denominator = 12 -- or some calculated value in your case
local numerator = 1

print(numerator .. "/" .. denominator)

将打印1/12

另外一句话:

--convert users answers in to strings
local cln = tonumber(ln)
local crn = tonumber(rn)

如果要将数字转换为字符串,则必须使用tostring(),而不是tonumber()

【讨论】:

  • 我的意思是使用 tonumber(),我只是在评论中打错了字。对于那个很抱歉。另外,我不是要打印分数,而是要打印除法方程的答案。如果我没有说清楚,再次抱歉。
  • @robotbeta05 如果您不尝试打印分数,您应该编辑您的问题以明确您要做什么。
【解决方案2】:

我修复了我的错误,事实证明我必须切换变量位置才能进行除法。通常你不应该对 Lua 中的方程这样做,但我不得不这样做。我在减法中遇到了同样的问题,它也解决了这个问题。感谢大家的帮助。这是我的更改:

io.write (ln / rn)

io.write (rn / ln)

【讨论】:

  • 不清楚你的意思。你的问题也不是很清楚。请同时改进
  • 您可以在这里发布您的解决方案吗?否则,这不是一个明智或有用的答案。
猜你喜欢
  • 2018-03-08
  • 2013-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多