簡體   English   中英

獲取Cents for Stripe的價格

[英]Get Price in Cents for Stripe

我必須向Stripe發送一些以美分為單位的金額以便對卡進行收費。 在我的應用程序中, total_price值是一個小數,即以美元total_price分為單位。 顯然,我可以通過乘以100將其轉換為美分:

total_price * 100

但結果仍然是小數,Stripe給我一個'無效金額'錯誤。 我知道圓形浮子可能存在問題。 我想知道將total_price轉換為Rails中的整數的最安全的方法。 我看過一些關於金錢寶石的參考但在這種情況下這是必要的嗎?

Ruby有幾種可用於浮點數的方法,具體取決於您的需求:

  • (cart.total_price * 100).to_i (discards all decimals)
  • (cart.total_price * 100).round # .round(numofdecimals)
  • (cart.total_price * 100).floor # 1.3 => 1
  • (cart.total_price * 100).ceil # 1.3 => 2
  • (cart.total_price * 100).to_r #to rationals, eg 2.5 => 5/2

我希望這有幫助。

實際上有一種非常簡單的方法可以直接從小數點開始,而不必先轉換為浮點數。 鑒於:

decimal price = BigDecimal('100.00')

您可以使用BigDecimal的fix()和frac()方法獲取第一部分,乘以100並添加分數:

price_in_cents = ((decimal_price.fix * 100) + decimal_price.frac).to_i

另一個看似簡單的可能性是使用字符串操作。 您可以將小數轉換為字符串,去除句點,並轉換為整數,如:

price_in_cents = decimal_price.to_s.sub('.', '').to_i

但這里的問題是decimal_price.to_s =='100.0'不是'100.00'。 如果分數中存在非零數字,則它們將在轉換中保留,但否則會丟失一個。 因此,如果decimal_price == 111.11,那么上面的字符串操作將返回預期的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM