toFloat
將值轉換為浮點數,如果轉換失敗則返回默認值。
基礎用法
typescript
import { toFloat } from 'radash'
console.log(toFloat('3.14')) // 3.14
console.log(toFloat('123')) // 123.0
console.log(toFloat('abc', 0)) // 0
console.log(toFloat(null, 1.5)) // 1.5
語法
typescript
function toFloat(
value: any,
fallback?: number
): number
參數
value
(any): 要轉換的值fallback
(number, 可選): 轉換失敗時的默認值,默認為0
返回值
返回轉換後的浮點數,如果轉換失敗則返回fallback值。
示例
轉換字符串
typescript
import { toFloat } from 'radash'
console.log(toFloat('3.14')) // 3.14
console.log(toFloat('123')) // 123.0
console.log(toFloat('0.5')) // 0.5
console.log(toFloat('-2.5')) // -2.5
console.log(toFloat('3.14e2')) // 314.0
轉換數字
typescript
import { toFloat } from 'radash'
console.log(toFloat(3.14)) // 3.14
console.log(toFloat(123)) // 123.0
console.log(toFloat(0)) // 0.0
console.log(toFloat(-2.5)) // -2.5
console.log(toFloat(Infinity)) // Infinity
console.log(toFloat(-Infinity)) // -Infinity
處理無效值
typescript
import { toFloat } from 'radash'
console.log(toFloat('abc')) // 0 (默認fallback)
console.log(toFloat('abc', 1.5)) // 1.5
console.log(toFloat(null)) // 0
console.log(toFloat(null, 2.5)) // 2.5
console.log(toFloat(undefined)) // 0
console.log(toFloat(undefined, 3.5)) // 3.5
console.log(toFloat(NaN)) // 0
console.log(toFloat(NaN, 4.5)) // 4.5
處理特殊字符串
typescript
import { toFloat } from 'radash'
console.log(toFloat('')) // 0
console.log(toFloat(' ', 1.0)) // 1.0
console.log(toFloat(' 3.14 ')) // 3.14 (自動去除空格)
console.log(toFloat('3.14abc')) // 0 (無法解析)
console.log(toFloat('abc3.14')) // 0 (無法解析)
處理布爾值
typescript
import { toFloat } from 'radash'
console.log(toFloat(true)) // 1.0
console.log(toFloat(false)) // 0.0
處理數組和對象
typescript
import { toFloat } from 'radash'
console.log(toFloat([])) // 0
console.log(toFloat({})) // 0
console.log(toFloat([1, 2, 3])) // 0
console.log(toFloat({ key: 'value' })) // 0
處理函數
typescript
import { toFloat } from 'radash'
console.log(toFloat(() => {})) // 0
console.log(toFloat(() => 42)) // 0
在表單處理中使用
typescript
import { toFloat } from 'radash'
function processFormData(formData: any) {
return {
price: toFloat(formData.price, 0),
quantity: toFloat(formData.quantity, 1),
discount: toFloat(formData.discount, 0)
}
}
const formData = {
price: '29.99',
quantity: '3',
discount: 'invalid'
}
const processed = processFormData(formData)
console.log(processed)
// { price: 29.99, quantity: 3.0, discount: 0 }
在API響應處理中使用
typescript
import { toFloat } from 'radash'
function processApiResponse(response: any) {
return {
id: response.id,
score: toFloat(response.score, 0),
rating: toFloat(response.rating, 5.0),
price: toFloat(response.price, 0)
}
}
const apiResponse = {
id: 1,
score: '8.5',
rating: null,
price: 'invalid'
}
const processed = processApiResponse(apiResponse)
console.log(processed)
// { id: 1, score: 8.5, rating: 5.0, price: 0 }
在計算中使用
typescript
import { toFloat } from 'radash'
function calculateTotal(items: any[]) {
return items.reduce((total, item) => {
const price = toFloat(item.price, 0)
const quantity = toFloat(item.quantity, 1)
return total + (price * quantity)
}, 0)
}
const items = [
{ price: '10.50', quantity: '2' },
{ price: '5.25', quantity: '3' },
{ price: 'invalid', quantity: '1' }
]
const total = calculateTotal(items)
console.log(total) // 36.75 (10.5*2 + 5.25*3 + 0*1)
處理科學計數法
typescript
import { toFloat } from 'radash'
console.log(toFloat('1.23e4')) // 12300.0
console.log(toFloat('1.23E-2')) // 0.0123
console.log(toFloat('1e6')) // 1000000.0
console.log(toFloat('1.5e-3')) // 0.0015
處理十六進制和八進制
typescript
import { toFloat } from 'radash'
console.log(toFloat('0xFF')) // 0 (無法解析十六進制)
console.log(toFloat('0o77')) // 0 (無法解析八進制)
console.log(toFloat('0b1010')) // 0 (無法解析二進制)
注意事項
- 字符串解析: 只解析標准的十進制數字格式
- 空格處理: 自動去除字符串前後的空格
- 無效值: 對於無法解析的值,返回fallback值
- 布爾值: true轉換為1.0,false轉換為0.0
- 特殊值: null、undefined、NaN等返回fallback值
與其他方法的區別
parseFloat()
: 類似功能,但不會處理null/undefinedNumber()
: 更嚴格的轉換,NaN會返回NaNtoFloat()
: radash提供的更安全的轉換方法+value
: 快速轉換,但不夠安全
實際應用場景
- 表單處理: 安全地轉換用戶輸入的數字
- API處理: 處理可能包含無效數據的API響應
- 計算: 在數學計算中安全地轉換數值
- 數據驗證: 驗證和轉換數值類型的數據
- 配置處理: 處理配置文件中的數值設置