在C#中将double转换为字符串分数

时间:2015-04-16 13:59:33

标签: c# .net formatting double fractions

有没有一种简单的方法可以将C语言中的1.3333333转换为1 + 1/3?只有分数的代码而不是整数。我应该在使用分数之前将其拉出来吗?

2 个答案:

答案 0 :(得分:0)

我认为这很难。有两个原因:

  1. 分数总是可以转换为十进制数,但小数有时会丢失数字,因此无法进行精确的往返。例如:哪个数字有资格转换为1/3?:

    • 0.33 <?/ LI>
    • 0.333333?
    • 0.333333333333333333333333333333333333333333333333333333333333333333?
  2. 每个十进制数可以转换为多个分数。例如:0.25可以转换为:

    • 1/4
    • 2/8
    • 25/100
  3. 但是,如果您对某些不太精确的解决方案持开放态度,请尝试:Algorithm for simplifying decimal to fractions

答案 1 :(得分:0)

你应该设置最大分母,例如1 000 000(一个milione)并尝试缩短。你必须意识到可能会失去精确度

例如,您有1,450

  1. 你用分母得到分数部分和倍数,它是450 000/1 000 000
  2. 然后你会发现&#34;最大的除数&#34;
  3. 将两部分除以前一点的除数
  4. 最后你得到你的分数9/20