如何用if/elseif/else条件逻辑实现无冗余的分数描述语句输出
分数分类去冗余实现思路
第一步:按单位优先级做归一换算
- 先定义单位优先级从高到低为 整数1 > 1/2 > 1/3 > 1/4,换算时优先用大单位计数,避免小单位凑出大单位的冗余情况
- 换算规则:先拿总数值匹配最大单位,取整数部分作为该单位的计数,剩余的余数再匹配下一级更小的单位,直到所有单位都遍历完成
- 若有自定义的单位组合偏好(比如3/4要求输出为3个1/4而非1个1/2加1个1/4),可以在对应优先级层级加例外判断规则,跳过更高优先级小单位的换算即可
- 示例:总数值为1时,整数位计数为1,余数为0,后续小单位全部计数为0,自然不会输出4个四分之一、2个二分之一这类冗余内容
第二步:过滤无效计数项
- 换算完成后,先过滤掉所有计数为0的单位,只保留计数≥1的单位项
- 额外增加凑整校验:如果某小单位的计数刚好等于凑成上一级大单位的数量,直接替换为上一级单位。比如2个1/2直接替换为1个整数、3个1/3直接替换为1个整数、4个1/4直接替换为1个整数,从根源避免凑整的小单位输出
第三步:按规则拼接输出语句
- 当仅存在1个有效单位项时,直接输出「我有X个XX」格式的内容即可
- 当存在多个有效单位项时,前面的项用顿号分隔,最后两个项之间用「和」连接,比如有效项为1个整数、1个1/2时,输出为「我有1个整数和二分之一」
内容的提问来源于stack exchange,提问作者Ee Er
相关产品推荐
相关产品推荐

