配方成分转换

时间:2018-09-16 02:18:27

标签: c# sql

我有一个关于分数,小数和配方的问题。

让我们摆脱显而易见的障碍。这不是一项家庭作业(我已经有两个大学学历,不再需要)。这是我唯一的个人项目。

情况是这样。我有一个配方数据库。它已经在我编写的程序中使用,严格用于个人使用。目前,我将配方的数量存储为varchars。示例1/3量杯以1/3的形式存储在数量varchar字段中,而量杯则存储在测量varchar字段中。该程序目前允许我选择食谱并吐出购物清单。

现在,一个明显的问题是,如果我需要一个食谱一个洋葱,而另一个食谱需要1/2洋葱,那么我的食材购物清单上会出现两行。我对寻找一种存储成分数量的方法感兴趣,这样我可以在创建购物清单时添加它们。

我当前的RecipeIngredientTable的简化版本

RecipeID Links to Recipe table
IngredientID Links to Ingredient table
qty - varchar - for 1/3, 1, .33, etc
measurement - varchar - for Cups, grams, ounces, etc (I am toying with splitting this into its own table as well, but that's for later)

我曾经研究过将分数转换为小数(我想到的第一个选项),但立即遇到了障碍。假设三种不同的食谱都需要1/3杯牛奶。现在,当您添加时,它变成了一个杯子。但是,如果我将1/3杯中的每一个都转换为小数(.33),然后将其加起来3次,则最终得到.99或99/100。

我将如何处理将其转换回分数(在这种情况下为整数)?我不确定这应该在sql服务器端还是在我的C#代码中完成。

我还想出了一个查找表的想法,该表具有更常见的分数到十进制转换(1.4 = 0.25、11 / 16 = 0.6875、1 / 8 = 0.125等),并找到一种使用C#代码将每种成分的小数转换为分数,然后跳过代码中的圈,开始将分数相加。

任何建议将不胜感激。

作为补充,我意识到当我在数据库中实现新的数量存储时,我将不得不转换现有的配方。我待会再处理。

1 个答案:

答案 0 :(得分:1)

好的,我将使用Dan和Garr的回复。

我将从丹(Dan)修改他的建议,并像往常一样继续存储我的分数,但添加一列以将其转换为十进制。

至于Garr的回应,这简直就是KISS。我想得太多了。我喜欢四舍五入到最接近的整数的想法。它将使我能够从数据库中添加小数,并基本确定我需要多少物品。

谢谢你们。我只是希望有一种方法可以接受评论作为答案。