web
9 小时以前 49fa0d82a40345342966e810b44429aec0480ef3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// @ts-nocheck
import {isNumber} from '../isNumber';
// #ifdef APP-ANDROID
import BigDecimal from 'java.math.BigDecimal'
// import BigDecimal from 'java.math.BigDecimal'
// import StringBuilder from 'java.lang.StringBuilder'
// import java.math.BigDecimal;
// #endif
 
/**
 * 乘法函数,用于处理浮点数乘法并保持精度。
 * @param {number} num1 - 第一个乘数。
 * @param {number} num2 - 第二个乘数。
 * @returns {number} 乘法运算的结果,保留正确的精度。
 */
export function floatMul(num1 : number, num2 : number) : number {
    if (!(isNumber(num1) || isNumber(num2))) {
        console.warn('Please pass in the number type');
        return NaN;
    }
    let m = 0;
    // #ifdef APP-ANDROID
    let    s1 = BigDecimal.valueOf(num1.toDouble()).toPlainString(); //new UTSNumber(num1).toString() // //`${num1.toFloat()}`// num1.toString(),
    let    s2 = BigDecimal.valueOf(num2.toDouble()).toPlainString(); //new UTSNumber(num2).toString() //`${num2.toFloat()}`//.toString();
    // #endif
    // #ifndef APP-ANDROID
    let    s1:string = `${num1}`// num1.toString(),
    let    s2:string = `${num2}`//.toString();
    // #endif
    
    try {
        m += s1.split('.')[1].length;
    } catch (error) { }
    try {
        m += s2.split('.')[1].length;
    } catch (error) { }
    
    // #ifdef APP-ANDROID
    return parseFloat(s1.replace('.', '')) * parseFloat(s2.replace('.', '')) / Math.pow(10, m);
    // #endif
    // #ifndef APP-ANDROID
    return Number(s1.replace('.', '')) * Number(s2.replace('.', '')) / Math.pow(10, m);
    // #endif
}