表計算ソフトを用いて,買い物金額に応じたポイント数を計算する。買い物金額が1,000円以下では買い物金額の1%,買い物金額が1,000円を超え3,000円以下では買い物金額の2%,買い物金額が3,000円を超える場合は買い物金額の3%のポイントを付与する。ワークシートのセルA2に買い物金額が入力されるとき,ポイント数が表示されるセルB2に入る数式はどれか。ここで,ポイント数の小数点以下は切捨てとする。
| A | B | |
|---|---|---|
| 1 | 買い物金額 | ポイント数 |
| 2 | 3,350 | 100 |
这道题的解析和你的作答记录。
表計算ソフトを用いて,買い物金額に応じたポイント数を計算する。買い物金額が1,000円以下では買い物金額の1%,買い物金額が1,000円を超え3,000円以下では買い物金額の2%,買い物金額が3,000円を超える場合は買い物金額の3%のポイントを付与する。ワークシートのセルA2に買い物金額が入力されるとき,ポイント数が表示されるセルB2に入る数式はどれか。ここで,ポイント数の小数点以下は切捨てとする。
| A | B | |
|---|---|---|
| 1 | 買い物金額 | ポイント数 |
| 2 | 3,350 | 100 |
判断顺序为「A2≧3000 →3%」「A2≧1000 →1%」,首先边界方向就错了。规格中恰好 3,000 日元应为 2%,但用 A2≧3000 时 3,000 日元会变成 3%。此外,它把 1%(整数部(A2/100))分配给「超过 1,000 日元~3,000 日元」这一档,把 2%(整数部(A2*2/100))分配给「1,000 日元以下」,1% 与 2% 的对应关系发生了对调。
开头的「A2>3000 →3%」是正确的,但接下来的「A2>1000 →整数部(A2/100)=1%」有误。超过 1,000 日元且 3,000 日元以下的档应为 2%,却返回了 1%。最后一档(A2≦1000)也被分配了 2%(整数部(A2*2/100)),使得 1% 与 2% 两个积分率颠倒了。
正解 积分率的边界为「1,000 日元以下=1%」「超过 1,000 日元且 3,000 日元以下=2%」「超过 3,000 日元=3%」,关键都在于边界值归入哪一档。选项ウ的形式为 IF(A2≦1000, 整数部(A2/100), IF(A2≦3000, 整数部(A2*2/100), 整数部(A2*3/100))),先判断「A2≦1000」并返回 1%,当其为假(即超过 1,000 日元)时再判断「A2≦3000」并返回 2%,若仍为假(即超过 3,000 日元)则返回 3%。由于通过第一层判断时已确定「超过 1,000 日元」,因此第二层的「A2≦3000」自动表示「超过 1,000 日元且 3,000 日元以下」,与题目规格的分档正确一致。小数部分的舍去由整数部(INT)函数处理。A2=3,350 超过 3,000 日元,故 整数部(3350*3/100)=整数部(100.5)=100,与表中 B2=100 相符。因此正确答案是ウ。
本应用「以下(≦)」判断的地方却用「未满(<)」判断,即「A2<1000」「A2<3000」,因此边界值的处理与规格产生偏差。恰好 1,000 日元本应为 1%,但 A2<1000 为假,会被当作 2%。同样,恰好 3,000 日元本应为 2%,但 A2<3000 为假,会被当作 3%。