我知道一定有一种通用的方法,但我甚至不知道该搜索哪个词,我也不想重新发明轮子,糟糕的是。
‘分离组件值’和‘复合值’不会给出好的结果。
另一个例子: degrees+minutes+seconds来自秒弧,或tons+pounds+ounces来自盎司。
我在用C语言工作,但是从其他语言中翻译应该不会太难。
输入将是基本值,如总inches= 9534567,以及单位部门,如feet=12、yards=feet*3、miles=yards*1760。产量为150英里,849码,0英尺和3英寸。
当然,这可以推广到使用一些其他的单位划分。整个图书馆看起来都太过分了,不是吗?
发布于 2009-08-06 12:02:34
如前所述,当处理非标准长度的中间元素时,这是比较困难的.但是,给定一组标准的中断,您可以使用以下方法进行计算:
void components (long value, long * parts, int parts_sz, long * result) {
int i = 0;
for (; i < parts_sz; ++i) {
result[i] = value / parts[i];
value %= parts[i];
}
}
int main () {
int i = 0;
long parts[] = {10000, 1000,100,10,1}, result[] = {0,0,0,0,0};
long value = 99853;
components (value, parts, 5, result);
for (; i < 5; ++i)
printf ("There were %ld %lds\n", result[i], parts[i]);
retrun 0;
}产生的结果:
There were 9 10000s
There were 9 1000s
There were 8 100s
There were 5 10s
There were 3 1s发布于 2009-08-06 09:38:57
对于每个复合值,没有通用的方法。你给出的每一个例子在每个例子的“分裂”上都是完全不同的。当然,最糟糕的是日期,因为月长等方面的差异。
对于其他值,您可能可以按照为每个值提供“袖口”列表和返回每个值的列表的方式来管理。然后,你几乎只有模数和除法运算来分解这个值。
发布于 2009-08-06 10:36:32
在大多数情况下,计算是相当直截了当的,尽管编码所有的转换因子可能很繁琐。
然而,涉及持续时间的计算在概念上是困难的。一年有多少天?是365 ..。还是366?一年有多少秒?
https://stackoverflow.com/questions/1237851
复制相似问题