计算关税及增值税的各种方法
目录
- 使用ExcelVBA自定义公式的好处
- 使用VBA语言计算关税及增值税计算
- 使用C++语言计算关税及增值税计算
- 使用python语言计算关税及增值税计算
- 使用JAVA语言计算关税及增值税计算
- 使用C#语言计算关税及增值税计算
- 使用GO语言计算关税及增值税计算
- 使用PHP语言计算关税及增值税计算
- 使用C语言计算关税及增值税计算
使用VBA自定义公式在Excel中具有许多好处,以下是其中一些重要的优点:
增强功能:
- VBA自定义公式允许你根据特定需求编写自定义的函数,这使得Excel具备更强大的计算和处理能力。你可以根据具体的业务逻辑和算法编写自定义函数,以满足复杂的计算要求。
代码复用:
- 使用VBA自定义公式可以将复杂的计算逻辑封装成函数,从而实现代码的复用。你可以在多个工作簿或工作表中调用同一个自定义函数,避免重复编写相同的代码。
可读性和可维护性:
- 将复杂的计算逻辑封装在函数中可以使公式更加简洁和易读。VBA代码也支持注释,这有助于他人更好地理解代码的目的和实现方式,提高代码的可维护性。
错误处理:
- 通过使用VBA自定义公式,你可以实现更严格的错误处理机制。你可以在函数中添加错误检查和异常处理代码,提高代码的健壮性,防止运行时错误导致Excel崩溃或给出错误结果。
用户界面:
- VBA自定义公式可以结合用户界面(UserForm)来实现更复杂的数据输入和交互。这样用户可以通过自定义对话框来输入参数值,而不是直接在公式中输入,使得使用更加方便。
自动化:
- VBA自定义公式可以与其他VBA宏或功能一起使用,实现更高级的自动化任务。你可以编写VBA代码来触发自定义函数的计算,或者将自定义函数与其他VBA过程结合,实现复杂的自动化流程。
保护知识产权:
- 使用VBA自定义公式可以隐藏复杂的算法和计算逻辑,保护知识产权。如果你有自己的特殊算法或商业秘密,通过自定义函数来实现,可以防止他人轻易获取你的核心技术。
总结:
- 用VBA自定义公式能够提高Excel的功能性和灵活性,让你更好地控制数据处理和计算过程,从而使Excel成为一个更强大和定制化的数据分析工具。
Visual Basic for Applications (VBA):计算关税及增值税计算
在Excel中添加下列VBA代码方法如下:打开Excel文件。按下ALT + F11打开Visual Basic for Applications (VBA)编辑器。在VBA编辑器中,点击插入(Insert)菜单,然后选择模块(Module),这将创建一个新的模块。在新创建的模块中,将优化后的VBA代码粘贴进去。完成以上步骤后,你的Excel文件就包含了优化后的VBA函数gsfob。现在你可以在Excel的任意单元格中使用这个自定义函数,就像使用Excel内置函数一样。例如,在一个单元格中输入=gsfob(货值, 海关汇率, 海关税率, 运费, 保费, 杂费),然后按回车即可计算并显示结果。请确保在使用函数时提供正确的参数值。
Function gs(货值, 海关汇率, 海关税率)
货值 = Application.WorksheetFunction.Trim(货值)
海关汇率 = Application.WorksheetFunction.Trim(海关汇率)
海关税率 = Application.WorksheetFunction.Trim(海关税率)
完税价格 = Application.Round(货值 * 海关汇率, 2)
gs = Application.Round(完税价格 * 海关税率 / 100, 2)
End Function
Function zzs(货值, 海关汇率, 海关税率)
货值 = Application.WorksheetFunction.Trim(货值)
海关汇率 = Application.WorksheetFunction.Trim(海关汇率)
海关税率 = Application.WorksheetFunction.Trim(海关税率)
完税价格 = Application.Round(货值 * 海关汇率, 2)
zzs = Application.Round((完税价格 + Application.Round(完税价格 * 海关税率 / 100, 2)) * 13 / 100, 2)
End Function
Function gsfob(货值, 海关汇率, 海关税率, 运费, 保费, 杂费)
货值 = Application.WorksheetFunction.Trim(货值)
海关汇率 = Application.WorksheetFunction.Trim(海关汇率)
海关税率 = Application.WorksheetFunction.Trim(海关税率)
运费 = Application.WorksheetFunction.Trim(运费)
保费 = Application.WorksheetFunction.Trim(保费)
杂费 = Application.WorksheetFunction.Trim(杂费)
总货值 = 货值 * 海关汇率
总运费 = IIf(运费 < 1, 总货值 * 运费 / 100, 运费)
总保费 = IIf(保费 < 1, (总货值 + 总运费) * 保费 / 100, 保费)
总杂费 = IIf(杂费 < 1, 总货值 * 杂费 / 100, 杂费)
wshz = Application.Round(总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1, 2)
gsfob = Application.Round(wshz * 海关税率 / 100, 2)
End Function
Function zzsfob(货值, 海关汇率, 海关税率, 运费, 保费, 杂费)
货值 = Application.WorksheetFunction.Trim(货值)
海关汇率 = Application.WorksheetFunction.Trim(海关汇率)
海关税率 = Application.WorksheetFunction.Trim(海关税率)
运费 = Application.WorksheetFunction.Trim(运费)
保费 = Application.WorksheetFunction.Trim(保费)
杂费 = Application.WorksheetFunction.Trim(杂费)
总货值 = 货值 * 海关汇率
总运费 = IIf(运费 < 1, 总货值 * 运费 / 100, 运费)
总保费 = IIf(保费 < 1, (总货值 + 总运费) * 保费 / 100, 保费)
总杂费 = IIf(杂费 < 1, 总货值 * 杂费 / 100, 杂费)
wshz = Application.Round(总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1, 2)
zzsfob = Application.Round((wshz + Application.Round(wshz * 海关税率 / 100, 2)) * 13 / 100, 2)
End Function
C++计算关税及增值税计算
注意,C++中没有类似于Excel VBA中的内置函数和对象模型,因此我们使用了
头文件中的round函数来实现四舍五入。这些C++函数与VBA函数在计算方面是等效的。如果你需要在C++中调用这些函数,确保提供正确的参数,并且要注意C++中的数据类型和函数返回类型。
#include <cmath> // For round function
double gs(double 货值, double 海关汇率, double 海关税率) {
货值 = std::round(货值);
海关汇率 = std::round(海关汇率);
海关税率 = std::round(海关税率);
double 完税价格 = std::round(货值 * 海关汇率 * 100) / 100;
return std::round(完税价格 * 海关税率) / 100;
}
double zzs(double 货值, double 海关汇率, double 海关税率) {
货值 = std::round(货值);
海关汇率 = std::round(海关汇率);
海关税率 = std::round(海关税率);
double 完税价格 = std::round(货值 * 海关汇率 * 100) / 100;
double 税款 = std::round(完税价格 * 海关税率) / 100;
return std::round((完税价格 + 税款) * 13) / 100;
}
double gsfob(double 货值, double 海关汇率, double 海关税率, double 运费, double 保费, double 杂费) {
货值 = std::round(货值);
海关汇率 = std::round(海关汇率);
海关税率 = std::round(海关税率);
运费 = std::round(运费);
保费 = std::round(保费);
杂费 = std::round(杂费);
double 总货值 = 货值 * 海关汇率;
double 总运费 = 运费 < 1 ? 总货值 * 运费 / 100 : 运费;
double 总保费 = 保费 < 1 ? (总货值 + 总运费) * 保费 / 100 : 保费;
double 总杂费 = 杂费 < 1 ? 总货值 * 杂费 / 100 : 杂费;
double wshz = 总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1;
return std::round(wshz * 海关税率) / 100;
}
double zzsfob(double 货值, double 海关汇率, double 海关税率, double 运费, double 保费, double 杂费) {
货值 = std::round(货值);
海关汇率 = std::round(海关汇率);
海关税率 = std::round(海关税率);
运费 = std::round(运费);
保费 = std::round(保费);
杂费 = std::round(杂费);
double 总货值 = 货值 * 海关汇率;
double 总运费 = 运费 < 1 ? 总货值 * 运费 / 100 : 运费;
double 总保费 = 保费 < 1 ? (总货值 + 总运费) * 保费 / 100 : 保费;
double 总杂费 = 杂费 < 1 ? 总货值 * 杂费 / 100 : 杂费;
double wshz = 总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1;
double 税款 = std::round(wshz * 海关税率) / 100;
return std::round((wshz + 税款) * 13) / 100;
}
python计算关税及增值税计算
在Python中,我们使用了str.strip()来去除字符串两端的空格,float()来将字符串转换为浮点数,以及round()来进行四舍五入操作。请注意Python中没有内置的Excel对象模型,因此我们直接通过基本的数据类型和运算来实现相应的功能。
def gs(货值, 海关汇率, 海关税率):
货值 = str(货值).strip()
海关汇率 = str(海关汇率).strip()
海关税率 = str(海关税率).strip()
完税价格 = round(float(货值) * float(海关汇率), 2)
return round(完税价格 * float(海关税率) / 100, 2)
def zzs(货值, 海关汇率, 海关税率):
货值 = str(货值).strip()
海关汇率 = str(海关汇率).strip()
海关税率 = str(海关税率).strip()
完税价格 = round(float(货值) * float(海关汇率), 2)
税款 = round(完税价格 * float(海关税率) / 100, 2)
return round((完税价格 + 税款) * 13 / 100, 2)
def gsfob(货值, 海关汇率, 海关税率, 运费, 保费, 杂费):
货值 = str(货值).strip()
海关汇率 = str(海关汇率).strip()
海关税率 = str(海关税率).strip()
运费 = str(运费).strip()
保费 = str(保费).strip()
杂费 = str(杂费).strip()
总货值 = float(货值) * float(海关汇率)
总运费 = 总货值 * float(运费) / 100 if float(运费) < 1 else float(运费)
总保费 = (总货值 + 总运费) * float(保费) / 100 if float(保费) < 1 else float(保费)
总杂费 = 总货值 * float(杂费) / 100 if float(杂费) < 1 else float(杂费)
wshz = round(总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1, 2)
return round(wshz * float(海关税率) / 100, 2)
def zzsfob(货值, 海关汇率, 海关税率, 运费, 保费, 杂费):
货值 = str(货值).strip()
海关汇率 = str(海关汇率).strip()
海关税率 = str(海关税率).strip()
运费 = str(运费).strip()
保费 = str(保费).strip()
杂费 = str(杂费).strip()
总货值 = float(货值) * float(海关汇率)
总运费 = 总货值 * float(运费) / 100 if float(运费) < 1 else float(运费)
总保费 = (总货值 + 总运费) * float(保费) / 100 if float(保费) < 1 else float(保费)
总杂费 = 总货值 * float(杂费) / 100 if float(杂费) < 1 else float(杂费)
wshz = round(总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1, 2)
税款 = round(wshz * float(海关税率) / 100, 2)
return round((wshz + 税款) * 13 / 100, 2)
JAVA计算关税及增值税计算
在Java中,我们定义了一个名为CustomsCalculator的类,并在该类中实现了gs、zzs、gsfob和zzsfob等函数。为了简化代码,我们添加了两个私有辅助函数trim和round,用于去除字符串两端的空格和进行四舍五入操作。请注意在Java中没有内置的Excel对象模型,因此我们使用基本的数据类型和Java的数学函数来实现相应的功能。
public class CustomsCalculator {
public static double gs(double 货值, double 海关汇率, double 海关税率) {
货值 = trim(货值);
海关汇率 = trim(海关汇率);
海关税率 = trim(海关税率);
double 完税价格 = round(货值 * 海关汇率, 2);
return round(完税价格 * 海关税率 / 100, 2);
}
public static double zzs(double 货值, double 海关汇率, double 海关税率) {
货值 = trim(货值);
海关汇率 = trim(海关汇率);
海关税率 = trim(海关税率);
double 完税价格 = round(货值 * 海关汇率, 2);
double 税款 = round(完税价格 * 海关税率 / 100, 2);
return round((完税价格 + 税款) * 13 / 100, 2);
}
public static double gsfob(double 货值, double 海关汇率, double 海关税率, double 运费, double 保费, double 杂费) {
货值 = trim(货值);
海关汇率 = trim(海关汇率);
海关税率 = trim(海关税率);
运费 = trim(运费);
保费 = trim(保费);
杂费 = trim(杂费);
double 总货值 = 货值 * 海关汇率;
double 总运费 = 运费 < 1 ? 总货值 * 运费 / 100 : 运费;
double 总保费 = 保费 < 1 ? (总货值 + 总运费) * 保费 / 100 : 保费;
double 总杂费 = 杂费 < 1 ? 总货值 * 杂费 / 100 : 杂费;
double wshz = round(总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1, 2);
return round(wshz * 海关税率 / 100, 2);
}
public static double zzsfob(double 货值, double 海关汇率, double 海关税率, double 运费, double 保费, double 杂费) {
货值 = trim(货值);
海关汇率 = trim(海关汇率);
海关税率 = trim(海关税率);
运费 = trim(运费);
保费 = trim(保费);
杂费 = trim(杂费);
double 总货值 = 货值 * 海关汇率;
double 总运费 = 运费 < 1 ? 总货值 * 运费 / 100 : 运费;
double 总保费 = 保费 < 1 ? (总货值 + 总运费) * 保费 / 100 : 保费;
double 总杂费 = 杂费 < 1 ? 总货值 * 杂费 / 100 : 杂费;
double wshz = round(总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1, 2);
double 税款 = round(wshz * 海关税率 / 100, 2);
return round((wshz + 税款) * 13 / 100, 2);
}
private static double trim(double value) {
return Double.parseDouble(String.valueOf(value).trim());
}
private static double round(double value, int places) {
double scale = Math.pow(10, places);
return Math.round(value * scale) / scale;
}
public static void main(String[] args) {
// Example usage:
double 货值 = 100.0;
double 海关汇率 = 0.85;
double 海关税率 = 5.0;
double gsResult = gs(货值, 海关汇率, 海关税率);
System.out.println("gs: " + gsResult);
double zzsResult = zzs(货值, 海关汇率, 海关税率);
System.out.println("zzs: " + zzsResult);
}
}
使用C#计算关税及增值税计算
在C#中,我们定义了一个名为CustomsCalculator的类,并在该类中实现了gs、zzs、gsfob和zzsfob等函数。为了简化代码,我们添加了两个私有辅助函数Trim和Round,用于去除字符串两端的空格和进行四舍五入操作。请注意C#中没有内置的Excel对象模型,因此我们使用基本的数据类型和C#的数学函数来实现相应的功能。
using System;
public class CustomsCalculator
{
public static double gs(double 货值, double 海关汇率, double 海关税率)
{
货值 = Trim(货值);
海关汇率 = Trim(海关汇率);
海关税率 = Trim(海关税率);
double 完税价格 = Round(货值 * 海关汇率, 2);
return Round(完税价格 * 海关税率 / 100, 2);
}
public static double zzs(double 货值, double 海关汇率, double 海关税率)
{
货值 = Trim(货值);
海关汇率 = Trim(海关汇率);
海关税率 = Trim(海关税率);
double 完税价格 = Round(货值 * 海关汇率, 2);
double 税款 = Round(完税价格 * 海关税率 / 100, 2);
return Round((完税价格 + 税款) * 13 / 100, 2);
}
public static double gsfob(double 货值, double 海关汇率, double 海关税率, double 运费, double 保费, double 杂费)
{
货值 = Trim(货值);
海关汇率 = Trim(海关汇率);
海关税率 = Trim(海关税率);
运费 = Trim(运费);
保费 = Trim(保费);
杂费 = Trim(杂费);
double 总货值 = 货值 * 海关汇率;
double 总运费 = 运费 < 1 ? 总货值 * 运费 / 100 : 运费;
double 总保费 = 保费 < 1 ? (总货值 + 总运费) * 保费 / 100 : 保费;
double 总杂费 = 杂费 < 1 ? 总货值 * 杂费 / 100 : 杂费;
double wshz = Round(总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1, 2);
return Round(wshz * 海关税率 / 100, 2);
}
public static double zzsfob(double 货值, double 海关汇率, double 海关税率, double 运费, double 保费, double 杂费)
{
货值 = Trim(货值);
海关汇率 = Trim(海关汇率);
海关税率 = Trim(海关税率);
运费 = Trim(运费);
保费 = Trim(保费);
杂费 = Trim(杂费);
double 总货值 = 货值 * 海关汇率;
double 总运费 = 运费 < 1 ? 总货值 * 运费 / 100 : 运费;
double 总保费 = 保费 < 1 ? (总货值 + 总运费) * 保费 / 100 : 保费;
double 总杂费 = 杂费 < 1 ? 总货值 * 杂费 / 100 : 杂费;
double wshz = Round(总货值 + 总运费 * 1 + 总保费 * 1 + 总杂费 * 1, 2);
double 税款 = Round(wshz * 海关税率 / 100, 2);
return Round((wshz + 税款) * 13 / 100, 2);
}
private static double Trim(double value)
{
return double.Parse(value.ToString().Trim());
}
private static double Round(double value, int decimals)
{
return Math.Round(value, decimals);
}
public static void Main(string[] args)
{
// Example usage:
double 货值 = 100.0;
double 海关汇率 = 0.85;
double 海关税率 = 5.0;
double gsResult = gs(货值, 海关汇率, 海关税率);
Console.WriteLine("gs: " + gsResult);
double zzsResult = zzs(货值, 海关汇率, 海关税率);
Console.WriteLine("zzs: " + zzsResult);
}
}
使用GO语言计算关税及增值税计算
在Go中,我们定义了gs、zzs、gsfob和zzsfob等函数。我们还添加了去空格和四舍五入函数来帮助进行字符串去空格和四舍五入操作。由于Go中没有内置的Excel对象模型,我们使用标准的数学操作和字符串处理来实现相应的功能。
package main
import (
"fmt"
"math"
"strconv"
"strings"
)
func gs(货值, 海关汇率, 海关税率 float64) float64 {
货值 = trim(货值)
海关汇率 = trim(海关汇率)
海关税率 = trim(海关税率)
完税价格 := round(货值 * 海关汇率, 2)
return round(完税价格 * 海关税率 / 100, 2)
}
func zzs(货值, 海关汇率, 海关税率 float64) float64 {
货值 = trim(货值)
海关汇率 = trim(海关汇率)
海关税率 = trim(海关税率)
完税价格 := round(货值 * 海关汇率, 2)
税款 := round(完税价格 * 海关税率 / 100, 2)
return round((完税价格 + 税款) * 13 / 100, 2)
}
func gsfob(货值, 海关汇率, 海关税率, 运费, 保费, 杂费 float64) float64 {
货值 = trim(货值)
海关汇率 = trim(海关汇率)
海关税率 = trim(海关税率)
运费 = trim(运费)
保费 = trim(保费)
杂费 = trim(杂费)
总货值 := 货值 * 海关汇率
总运费 := 运费
if 运费 < 1 {
总运费 = 总货值 * 运费 / 100
}
总保费 := 保费
if 保费 < 1 {
总保费 = (总货值 + 总运费) * 保费 / 100
}
总杂费 := 杂费
if 杂费 < 1 {
总杂费 = 总货值 * 杂费 / 100
}
wshz := round(总货值 + 总运费*1 + 总保费*1 + 总杂费*1, 2)
return round(wshz*海关税率/100, 2)
}
func zzsfob(货值, 海关汇率, 海关税率, 运费, 保费, 杂费 float64) float64 {
货值 = trim(货值)
海关汇率 = trim(海关汇率)
海关税率 = trim(海关税率)
运费 = trim(运费)
保费 = trim(保费)
杂费 = trim(杂费)
总货值 := 货值 * 海关汇率
总运费 := 运费
if 运费 < 1 {
总运费 = 总货值 * 运费 / 100
}
总保费 := 保费
if 保费 < 1 {
总保费 = (总货值 + 总运费) * 保费 / 100
}
总杂费 := 杂费
if 杂费 < 1 {
总杂费 = 总货值 * 杂费 / 100
}
wshz := round(总货值 + 总运费*1 + 总保费*1 + 总杂费*1, 2)
税款 := round(wshz*海关税率/100, 2)
return round((wshz+税款)*13/100, 2)
}
func trim(value float64) float64 {
trimmedValue, _ := strconv.ParseFloat(strings.TrimSpace(strconv.FormatFloat(value, 'f', -1, 64)), 64)
return trimmedValue
}
func round(value float64, decimals int) float64 {
pow := math.Pow(10, float64(decimals))
return math.Round(value*pow) / pow
}
func main() {
// Example usage:
货值 := 100.0
海关汇率 := 0.85
海关税率 := 5.0
gsResult := gs(货值, 海关汇率, 海关税率)
fmt.Println("gs:", gsResult)
zzsResult := zzs(货值, 海关汇率, 海关税率)
fmt.Println("zzs:", zzsResult)
}
使用PHP语言计算关税及增值税计算
在PHP中,我们定义了gs、zzs、gsfob和zzsfob等函数。我们使用trim函数来去除输入值两端的空格,并使用round函数进行四舍五入操作。请注意PHP是一种脚本语言,与Excel对象模型不同,我们使用基本的数学操作和字符串处理来实现相应的功能。示例用法部分展示了如何调用这些函数并输出结果。
<?php
function gs($货值, $海关汇率, $海关税率) {
$货值 = trim($货值);
$海关汇率 = trim($海关汇率);
$海关税率 = trim($海关税率);
$完税价格 = round($货值 * $海关汇率, 2);
return round($完税价格 * $海关税率 / 100, 2);
}
function zzs($货值, $海关汇率, $海关税率) {
$货值 = trim($货值);
$海关汇率 = trim($海关汇率);
$海关税率 = trim($海关税率);
$完税价格 = round($货值 * $海关汇率, 2);
$税款 = round($完税价格 * $海关税率 / 100, 2);
return round(($完税价格 + $税款) * 13 / 100, 2);
}
function gsfob($货值, $海关汇率, $海关税率, $运费, $保费, $杂费) {
$货值 = trim($货值);
$海关汇率 = trim($海关汇率);
$海关税率 = trim($海关税率);
$运费 = trim($运费);
$保费 = trim($保费);
$杂费 = trim($杂费);
$总货值 = $货值 * $海关汇率;
$总运费 = $运费 < 1 ? $总货值 * $运费 / 100 : $运费;
$总保费 = $保费 < 1 ? ($总货值 + $总运费) * $保费 / 100 : $保费;
$总杂费 = $杂费 < 1 ? $总货值 * $杂费 / 100 : $杂费;
$wshz = round($总货值 + $总运费 * 1 + $总保费 * 1 + $总杂费 * 1, 2);
return round($wshz * $海关税率 / 100, 2);
}
function zzsfob($货值, $海关汇率, $海关税率, $运费, $保费, $杂费) {
$货值 = trim($货值);
$海关汇率 = trim($海关汇率);
$海关税率 = trim($海关税率);
$运费 = trim($运费);
$保费 = trim($保费);
$杂费 = trim($杂费);
$总货值 = $货值 * $海关汇率;
$总运费 = $运费 < 1 ? $总货值 * $运费 / 100 : $运费;
$总保费 = $保费 < 1 ? ($总货值 + $总运费) * $保费 / 100 : $保费;
$总杂费 = $杂费 < 1 ? $总货值 * $杂费 / 100 : $杂费;
$wshz = round($总货值 + $总运费 * 1 + $总保费 * 1 + $总杂费 * 1, 2);
$税款 = round($wshz * $海关税率 / 100, 2);
return round(($wshz + $税款) * 13 / 100, 2);
}
// 示例用法:
$货值 = 100.0;
$海关汇率 = 0.85;
$海关税率 = 5.0;
$gsResult = gs($货值, $海关汇率, $海关税率);
echo "gs: " . $gsResult . PHP_EOL;
$zzsResult = zzs($货值, $海关汇率, $海关税率);
echo "zzs: " . $zzsResult . PHP_EOL;
?>
使用C语言计算关税及增值税计算
在C中,我们实现了gs、zzs、gsfob和zzsfob等函数,使用trim函数去除输入值两端的空格,并使用round2函数进行四舍五入操作。在示例用法部分,我们展示了如何调用这些函数并输出结果。请注意,由于C语言是一种低级语言,没有内置的高级数学函数或字符串处理函数,所以我们需要手动实现这些功能。
#include <stdio.h>
#include <stdlib.h>
double trim(double value) {
// Function to remove leading and trailing whitespace from the input value
char str[100];
snprintf(str, sizeof(str), "%.15g", value);
return strtod(str, NULL);
}
double round2(double value, int decimals) {
// Function to round the value to the specified number of decimals
double multiplier = 1.0;
for (int i = 0; i < decimals; i++) {
multiplier *= 10.0;
}
return round(value * multiplier) / multiplier;
}
double gs(double 货值, double 海关汇率, double 海关税率) {
货值 = trim(货值);
海关汇率 = trim(海关汇率);
海关税率 = trim(海关税率);
double 完税价格 = 货值 * 海关汇率;
return round2(完税价格 * 海关税率 / 100, 2);
}
double zzs(double 货值, double 海关汇率, double 海关税率) {
货值 = trim(货值);
海关汇率 = trim(海关汇率);
海关税率 = trim(海关税率);
double 完税价格 = 货值 * 海关汇率;
double 税款 = 完税价格 * 海关税率 / 100;
return round2((完税价格 + 税款) * 13 / 100, 2);
}
double gsfob(double 货值, double 海关汇率, double 海关税率, double 运费, double 保费, double 杂费) {
货值 = trim(货值);
海关汇率 = trim(海关汇率);
海关税率 = trim(海关税率);
运费 = trim(运费);
保费 = trim(保费);
杂费 = trim(杂费);
double 总货值 = 货值 * 海关汇率;
double 总运费 = 运费 < 1 ? 总货值 * 运费 / 100 : 运费;
double 总保费 = 保费 < 1 ? (总货值 + 总运费) * 保费 / 100 : 保费;
double 总杂费 = 杂费 < 1 ? 总货值 * 杂费 / 100 : 杂费;
double wshz = 总货值 + 总运费 + 总保费 + 总杂费;
return round2(wshz * 海关税率 / 100, 2);
}
double zzsfob(double 货值, double 海关汇率, double 海关税率, double 运费, double 保费, double 杂费) {
货值 = trim(货值);
海关汇率 = trim(海关汇率);
海关税率 = trim(海关税率);
运费 = trim(运费);
保费 = trim(保费);
杂费 = trim(杂费);
double 总货值 = 货值 * 海关汇率;
double 总运费 = 运费 < 1 ? 总货值 * 运费 / 100 : 运费;
double 总保费 = 保费 < 1 ? (总货值 + 总运费) * 保费 / 100 : 保费;
double 总杂费 = 杂费 < 1 ? 总货值 * 杂费 / 100 : 杂费;
double wshz = 总货值 + 总运费 + 总保费 + 总杂费;
double 税款 = wshz * 海关税率 / 100;
return round2((wshz + 税款) * 13 / 100, 2);
}
int main() {
// 示例用法:
double 货值 = 100.0;
double 海关汇率 = 0.85;
double 海关税率 = 5.0;
double gsResult = gs(货值, 海关汇率, 海关税率);
printf("gs: %.2f\n", gsResult);
double zzsResult = zzs(货值, 海关汇率, 海关税率);
printf("zzs: %.2f\n", zzsResult);
return 0;
}