2012-02-21 22 views
2

我想弄清楚如何存儲1/3或任何導致MySQL中無限重複十進制值的分數。我不能只使用3.333333,因爲它顯然不總是100.我一直在閱讀關於浮點數據類型,但我不知道這是否會工作。任何幫助,將不勝感激。如何在MySQL中存儲1/3作爲十進制

謝謝

+1

我不認爲這是存儲這樣的一小部分默認的方式 - 比當然是純文本等。任何浮點整數永遠不會真正加起來達到100,不管它多長時間,但是一旦你把它拉出來,你總是可以用你的代碼四捨五入到最接近的整數。這一切都取決於你對這些分數做些什麼。 – BenOfTheNorth 2012-02-21 21:34:36

+0

這可能是一個愚蠢的問題,但你想達到什麼目的?我的意思是什麼是存儲所需的精確分數 – 2012-02-21 22:42:23

+0

我正在編寫一個計算資產所有權的應用程序。例如,如果資產由3人共享,我想提供按百分比(20%,20%,60%)或分數(1/3,1/3,1/3)潛水的選項。我的表只接受小數,所以如果我想平均分配一個資產3或6,或任何不能用小數表示的東西,我不知道如何記錄它。 – Progger 2012-02-22 04:29:25

回答

7

將分子和分母存儲在不同的列中。這真的很簡單。如果想要將所有分數加起來,真正的問題會在後面出現。有些語言有內置的功能,但我不認爲MySQL會這樣做。

10

您可以將所有有理數(包括整數)表示爲「分子」和「分母」。所以在你的表格中你會有一個分子和分母列,你的應用程序將有邏輯來存儲使用該表單的數字。

您仍然無法使用此技術精確地存儲無理數(即如果您想存儲Pi,則無論如何都需要使用分數近似值)。

在這裏看看有理數是什麼,所以你可以理解這種技術的侷限性。

http://en.wikipedia.org/wiki/Rational_number

+0

呃,只是把它當作22/7,夠接近就好了 – 2012-02-21 21:41:18

+0

太棒了,104348/33215在這裏看到更多的近似值以及如何計算它們。 http://mathworld.wolfram.com/PiApproximations.html – Roadmaster 2012-02-21 21:49:40

相關問題