配方成分转换

问题描述 投票:1回答:1

我有一个关于分数,小数和食谱的问题。

让我们明白一点。这不是家庭作业(我已经有两个大学学位,我不再需要)。这是我唯一的个人项目。

情况就是这样。我有一个食谱数据库。它已被用于我编写的程序中,仅供个人使用。目前我将食谱的数量存储为varchars。示例1/3杯在量变量场中存储为1/3,并且杯存储在测量变量场中。该程序目前允许我选择食谱并吐出购物清单。

现在,显而易见的问题是,如果我需要1个洋葱作为一个食谱而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 server端还是在我的C#代码中完成。

我也玩弄了一个查找表的想法,其中有更常见的小数转换(1.4 = 0.25,11 / 16 = 0.6875,1 / 8 = 0.125等),并找到一种方法来使用C#代码将小数转换回每个单独成分的分数,然后在代码中跳过箍以开始将分数加在一起。

任何建议,将不胜感激。

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

c# sql
1个回答
1
投票

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

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

至于Garr的回应,这就是KISS的简洁。我试图过度思考这个问题。我喜欢四舍五入到最接近的整数的想法。它允许我从数据库中添加小数,并基本计算出我需要多少项目。

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

© www.soinside.com 2019 - 2024. All rights reserved.