設定→注文処理→追加スクリプトに
{{checkout.total_price}}
と、すると合計金額が「1100」の場合「110000」と表示されてしまいます。
moneyフィルター{{ checkout.total_price | money }}を使うと正常な金額になるのですが、そうすると整数ではなくなってしまうので、困っております。
正常な整数値の取得方法をご存じの方がいらっしゃいましたらご教授いただけますと助かります!
よろしくお願いいたします。
チェックアウト時の {{ checkout.total_price }} で、想定より2桁多い数値が返る問題が扱われた。例では合計金額が「1100円」の場合に 110000 と表示され、money フィルターを使うと見た目は正しくても整数値としては扱いにくい状況だった。
主な確認結果:
checkout.total_price は通貨表示用の値ではなく、最小単位を前提にした数値として返っている可能性が高い。money / money_with_currency などは表示用には有効だが、整数値のまま取得したい用途には不向き。Math filter で 100 で割る方法により、111000 → 1110 のように期待する整数値へ変換できた。最終的に、実用上の解決策は「Math filter で100除算する」ことになった。2桁多い理由については、ドルなど小数点以下2桁を持つ通貨にも対応できるようにした汎用仕様ではないか、という説明が示されている。議論は概ね解決済み。
設定→注文処理→追加スクリプトに
{{checkout.total_price}}
と、すると合計金額が「1100」の場合「110000」と表示されてしまいます。
moneyフィルター{{ checkout.total_price | money }}を使うと正常な金額になるのですが、そうすると整数ではなくなってしまうので、困っております。
正常な整数値の取得方法をご存じの方がいらっしゃいましたらご教授いただけますと助かります!
よろしくお願いいたします。
この辺りはいかがですか?
https://shopify.dev/docs/themes/liquid/reference/filters/money-filters#money_with_currency
最悪Math filterで100で割るなどもできます。
ありがとうございます!
moneyフィルターはうまくいきませんでしたが、Mathフィルターでできました。
total_price = 111000
total_price-money = ¥1,110
total_price-money_with_currency = ¥1,110 JPY
total_price-money_without_trailing_zeros = ¥1,110
total_price-money_without_currency = 1,110
total_price-divided_by = 1110
total_priceが2桁多いのは通貨の設定なのでしょうか、、
解決できてよかったです。
total_priceが2桁多いのは通貨の設定なのでしょうか、、
ドルなどの小数点以下2桁をサポートする通貨を含めて汎用的に処理するための仕様かと思います。(グローバル決済サービスでもこういったアプローチを見かけることがあります)