@jjlmoya/utils-finance 1.30.0 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/category/i18n/en.ts +1 -1
- package/src/category/i18n/es.ts +4 -4
- package/src/category/i18n/fr.ts +159 -159
- package/src/category/i18n/pl.ts +1 -1
- package/src/category/i18n/ru.ts +158 -158
- package/src/category/index.ts +39 -38
- package/src/category/seo.astro +1 -1
- package/src/components/PreviewNavSidebar.astro +1 -1
- package/src/components/PreviewToolbar.astro +1 -1
- package/src/data.ts +1 -1
- package/src/entries.ts +4 -1
- package/src/env.d.ts +1 -1
- package/src/index.ts +1 -0
- package/src/layouts/PreviewLayout.astro +113 -113
- package/src/pages/index.astro +1 -1
- package/src/tests/bibliography_wellformed_export.test.ts +46 -0
- package/src/tests/category_seo_quality.test.ts +76 -0
- package/src/tests/faq_count.test.ts +1 -1
- package/src/tests/locale_completeness.test.ts +2 -2
- package/src/tests/mocks/astro_mock.js +1 -1
- package/src/tests/no_h1_in_components.test.ts +1 -1
- package/src/tests/script_density.test.ts +94 -94
- package/src/tests/seo_length.test.ts +23 -23
- package/src/tests/seo_translation_completeness.test.ts +69 -0
- package/src/tests/seo_wellformed_export.test.ts +65 -0
- package/src/tests/tool_validation.test.ts +17 -17
- package/src/tool/compoundInterest/compound-interest-calculator.css +236 -236
- package/src/tool/compoundInterest/entry.ts +32 -32
- package/src/tool/compoundInterest/i18n/de.ts +195 -195
- package/src/tool/compoundInterest/i18n/fr.ts +195 -195
- package/src/tool/compoundInterest/i18n/it.ts +195 -195
- package/src/tool/compoundInterest/i18n/pl.ts +194 -194
- package/src/tool/compoundInterest/i18n/ru.ts +195 -195
- package/src/tool/compoundInterest/i18n/tr.ts +195 -195
- package/src/tool/compoundInterest/i18n/zh.ts +189 -189
- package/src/tool/compoundInterest/seo.astro +15 -15
- package/src/tool/courtFeeCalculator/i18n/it.ts +158 -158
- package/src/tool/courtFeeCalculator/i18n/ru.ts +158 -158
- package/src/tool/courtFeeCalculator/i18n/tr.ts +158 -158
- package/src/tool/courtFeeCalculator/seo.astro +15 -15
- package/src/tool/courtFeeCalculator/spanish-court-fees-calculator.css +197 -197
- package/src/tool/debtSnowball/bibliography.ts +12 -12
- package/src/tool/debtSnowball/i18n/de.ts +16 -16
- package/src/tool/debtSnowball/i18n/id.ts +16 -16
- package/src/tool/debtSnowball/i18n/it.ts +168 -168
- package/src/tool/debtSnowball/i18n/nl.ts +16 -16
- package/src/tool/debtSnowball/i18n/pl.ts +168 -168
- package/src/tool/debtSnowball/i18n/pt.ts +1 -1
- package/src/tool/debtSnowball/i18n/ru.ts +1 -1
- package/src/tool/debtSnowball/i18n/sv.ts +22 -29
- package/src/tool/debtSnowball/i18n/tr.ts +168 -168
- package/src/tool/debtSnowball/i18n/zh.ts +168 -168
- package/src/tool/debtSnowball/seo.astro +15 -15
- package/src/tool/dividendYield/bibliography.astro +14 -0
- package/src/tool/dividendYield/bibliography.ts +12 -0
- package/src/tool/dividendYield/component.astro +83 -0
- package/src/tool/dividendYield/controller.ts +85 -0
- package/src/tool/dividendYield/dividend-yield-calculator.css +352 -0
- package/src/tool/dividendYield/dom-views.ts +58 -0
- package/src/tool/dividendYield/entry.ts +29 -0
- package/src/tool/dividendYield/evaluator.ts +16 -0
- package/src/tool/dividendYield/i18n/de.ts +53 -0
- package/src/tool/dividendYield/i18n/en.ts +138 -0
- package/src/tool/dividendYield/i18n/es.ts +49 -0
- package/src/tool/dividendYield/i18n/fr.ts +49 -0
- package/src/tool/dividendYield/i18n/id.ts +49 -0
- package/src/tool/dividendYield/i18n/it.ts +49 -0
- package/src/tool/dividendYield/i18n/ja.ts +49 -0
- package/src/tool/dividendYield/i18n/ko.ts +25 -0
- package/src/tool/dividendYield/i18n/nl.ts +25 -0
- package/src/tool/dividendYield/i18n/pl.ts +25 -0
- package/src/tool/dividendYield/i18n/pt.ts +25 -0
- package/src/tool/dividendYield/i18n/ru.ts +25 -0
- package/src/tool/dividendYield/i18n/sv.ts +25 -0
- package/src/tool/dividendYield/i18n/tr.ts +25 -0
- package/src/tool/dividendYield/i18n/zh.ts +25 -0
- package/src/tool/dividendYield/index.ts +11 -0
- package/src/tool/dividendYield/logic.test.ts +73 -0
- package/src/tool/dividendYield/logic.ts +55 -0
- package/src/tool/dividendYield/seo.astro +14 -0
- package/src/tool/dividendYield/storage.ts +24 -0
- package/src/tool/dividendYield/ui.ts +33 -0
- package/src/tool/financialFreedom/financial-freedom-calculator.css +311 -311
- package/src/tool/financialFreedom/i18n/en.ts +182 -182
- package/src/tool/financialFreedom/i18n/fr.ts +128 -128
- package/src/tool/financialFreedom/i18n/id.ts +24 -7
- package/src/tool/financialFreedom/i18n/it.ts +24 -7
- package/src/tool/financialFreedom/i18n/ja.ts +1 -1
- package/src/tool/financialFreedom/i18n/nl.ts +24 -7
- package/src/tool/financialFreedom/i18n/pl.ts +24 -7
- package/src/tool/financialFreedom/i18n/pt.ts +24 -7
- package/src/tool/financialFreedom/i18n/ru.ts +128 -128
- package/src/tool/financialFreedom/i18n/sv.ts +1 -1
- package/src/tool/financialFreedom/i18n/tr.ts +2 -2
- package/src/tool/financialFreedom/i18n/zh.ts +128 -128
- package/src/tool/fireCalculator/i18n/it.ts +241 -241
- package/src/tool/fireCalculator/i18n/ru.ts +241 -241
- package/src/tool/fireCalculator/i18n/tr.ts +241 -241
- package/src/tool/fireCalculator/i18n/zh.ts +241 -241
- package/src/tool/fireCalculator/seo.astro +15 -15
- package/src/tool/ibanBicSwiftConverter/i18n/fr.ts +151 -151
- package/src/tool/ibanBicSwiftConverter/i18n/it.ts +118 -118
- package/src/tool/ibanBicSwiftConverter/i18n/ru.ts +118 -118
- package/src/tool/ibanBicSwiftConverter/i18n/tr.ts +118 -118
- package/src/tool/ibanBicSwiftConverter/iban-to-bic-swift-converter.css +366 -366
- package/src/tool/ibanBicSwiftConverter/seo.astro +15 -15
- package/src/tool/inflation/bibliography.ts +20 -20
- package/src/tool/inflation/entry.ts +32 -32
- package/src/tool/inflation/i18n/de.ts +284 -284
- package/src/tool/inflation/i18n/fr.ts +284 -284
- package/src/tool/inflation/i18n/it.ts +284 -284
- package/src/tool/inflation/i18n/nl.ts +284 -284
- package/src/tool/inflation/i18n/pl.ts +284 -284
- package/src/tool/inflation/i18n/pt.ts +284 -284
- package/src/tool/inflation/i18n/ru.ts +284 -284
- package/src/tool/inflation/i18n/sv.ts +284 -284
- package/src/tool/inflation/i18n/tr.ts +284 -284
- package/src/tool/inflation/i18n/zh.ts +284 -284
- package/src/tool/inflation/seo.astro +15 -15
- package/src/tool/lateInterest/bibliography.ts +16 -16
- package/src/tool/lateInterest/entry.ts +32 -32
- package/src/tool/lateInterest/i18n/de.ts +213 -213
- package/src/tool/lateInterest/i18n/es.ts +213 -213
- package/src/tool/lateInterest/i18n/it.ts +213 -213
- package/src/tool/lateInterest/i18n/nl.ts +213 -213
- package/src/tool/lateInterest/i18n/pl.ts +213 -213
- package/src/tool/lateInterest/i18n/pt.ts +213 -213
- package/src/tool/lateInterest/i18n/ru.ts +213 -213
- package/src/tool/lateInterest/i18n/sv.ts +213 -213
- package/src/tool/lateInterest/i18n/tr.ts +213 -213
- package/src/tool/lateInterest/i18n/zh.ts +213 -213
- package/src/tool/lateInterest/seo.astro +15 -15
- package/src/tool/legalInterestRate/i18n/it.ts +129 -129
- package/src/tool/legalInterestRate/i18n/ru.ts +129 -129
- package/src/tool/legalInterestRate/i18n/tr.ts +128 -121
- package/src/tool/legalInterestRate/i18n/zh.ts +11 -4
- package/src/tool/legalInterestRate/seo.astro +15 -15
- package/src/tool/lotteryOptimizer/i18n/it.ts +163 -163
- package/src/tool/lotteryOptimizer/i18n/pl.ts +163 -163
- package/src/tool/lotteryOptimizer/i18n/ru.ts +163 -163
- package/src/tool/lotteryOptimizer/i18n/tr.ts +163 -163
- package/src/tool/lotteryOptimizer/i18n/zh.ts +162 -155
- package/src/tool/lotteryOptimizer/seo.astro +15 -15
- package/src/tool/mortgage/bibliography.ts +20 -20
- package/src/tool/mortgage/entry.ts +32 -32
- package/src/tool/mortgage/i18n/de.ts +210 -210
- package/src/tool/mortgage/i18n/es.ts +210 -210
- package/src/tool/mortgage/i18n/fr.ts +210 -210
- package/src/tool/mortgage/i18n/id.ts +210 -210
- package/src/tool/mortgage/i18n/it.ts +210 -210
- package/src/tool/mortgage/i18n/nl.ts +210 -210
- package/src/tool/mortgage/i18n/pl.ts +210 -210
- package/src/tool/mortgage/i18n/ru.ts +210 -210
- package/src/tool/mortgage/i18n/tr.ts +210 -210
- package/src/tool/mortgage/i18n/zh.ts +210 -210
- package/src/tool/mortgage/mortgage-calculator.css +595 -595
- package/src/tool/mortgage/seo.astro +15 -15
- package/src/tool/percentageCalculator/bibliography.ts +16 -16
- package/src/tool/percentageCalculator/entry.ts +32 -32
- package/src/tool/percentageCalculator/i18n/de.ts +220 -220
- package/src/tool/percentageCalculator/i18n/en.ts +220 -220
- package/src/tool/percentageCalculator/i18n/es.ts +220 -220
- package/src/tool/percentageCalculator/i18n/fr.ts +220 -220
- package/src/tool/percentageCalculator/i18n/it.ts +220 -220
- package/src/tool/percentageCalculator/i18n/pl.ts +220 -220
- package/src/tool/percentageCalculator/i18n/ru.ts +220 -220
- package/src/tool/percentageCalculator/i18n/tr.ts +220 -220
- package/src/tool/percentageCalculator/i18n/zh.ts +220 -220
- package/src/tool/percentageCalculator/seo.astro +15 -15
- package/src/tool/profitability/i18n/de.ts +24 -7
- package/src/tool/profitability/i18n/fr.ts +121 -104
- package/src/tool/profitability/i18n/id.ts +2 -2
- package/src/tool/profitability/i18n/it.ts +24 -7
- package/src/tool/profitability/i18n/ja.ts +1 -1
- package/src/tool/profitability/i18n/nl.ts +24 -7
- package/src/tool/profitability/i18n/pl.ts +1 -1
- package/src/tool/profitability/i18n/pt.ts +24 -7
- package/src/tool/profitability/i18n/ru.ts +118 -118
- package/src/tool/profitability/i18n/sv.ts +1 -1
- package/src/tool/profitability/i18n/tr.ts +1 -1
- package/src/tool/profitability/i18n/zh.ts +118 -118
- package/src/tool/profitability/profitability-calculator.css +229 -229
- package/src/tool/rentIncreaseCalculator/i18n/it.ts +125 -125
- package/src/tool/rentIncreaseCalculator/i18n/tr.ts +125 -125
- package/src/tool/rentIncreaseCalculator/rent-increase-calculator.css +326 -326
- package/src/tool/rentIncreaseCalculator/seo.astro +15 -15
- package/src/tool/revolvingCardCalculator/i18n/de.ts +38 -20
- package/src/tool/revolvingCardCalculator/i18n/es.ts +19 -18
- package/src/tool/revolvingCardCalculator/i18n/fr.ts +32 -28
- package/src/tool/revolvingCardCalculator/i18n/id.ts +18 -18
- package/src/tool/revolvingCardCalculator/i18n/it.ts +18 -18
- package/src/tool/revolvingCardCalculator/i18n/ja.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/ko.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/nl.ts +22 -19
- package/src/tool/revolvingCardCalculator/i18n/pl.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/pt.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/ru.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/sv.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/tr.ts +2 -2
- package/src/tool/revolvingCardCalculator/i18n/zh.ts +6 -6
- package/src/tool/salaryEmployerCost/i18n/de.ts +10 -10
- package/src/tool/salaryEmployerCost/i18n/fr.ts +9 -9
- package/src/tool/salaryEmployerCost/i18n/id.ts +9 -9
- package/src/tool/salaryEmployerCost/i18n/it.ts +9 -9
- package/src/tool/salaryEmployerCost/i18n/ja.ts +1 -1
- package/src/tool/salaryEmployerCost/i18n/ko.ts +1 -1
- package/src/tool/salaryEmployerCost/i18n/nl.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/pl.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/pt.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/ru.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/sv.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/tr.ts +2 -2
- package/src/tool/salaryEmployerCost/i18n/zh.ts +2 -2
- package/src/tools.ts +2 -1
|
@@ -1,220 +1,220 @@
|
|
|
1
|
-
import { bibliography } from '../bibliography'
|
|
2
|
-
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
-
import type { ToolLocaleContent } from '../../../types';
|
|
4
|
-
import type { PercentageCalculatorUI } from '../ui';
|
|
5
|
-
|
|
6
|
-
const slug = 'percentage-calculator';
|
|
7
|
-
const title = 'Percentage Calculator: 4 in 1 for Discounts, Tax and Markups';
|
|
8
|
-
const description =
|
|
9
|
-
'Calculate percentages online for free. 4 tools in 1 to find X% of Y, percentage difference, add or subtract VAT, discounts and tip calculations automatically.';
|
|
10
|
-
|
|
11
|
-
const faqData = [
|
|
12
|
-
{
|
|
13
|
-
question: 'How does the calculator work?',
|
|
14
|
-
answer:
|
|
15
|
-
'Simply type the values in the fields of the use case that matches your problem and our calculator processes the formula without needing to press a calculate button.',
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
question: 'Is it valid for calculating VAT or taxes?',
|
|
19
|
-
answer:
|
|
20
|
-
'Yes, Case 4 (Add or subtract percentage) is designed precisely for cases like applying a 21% VAT to a base price or calculating negative income tax.',
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
question: 'Does it handle decimals and negative numbers?',
|
|
24
|
-
answer:
|
|
25
|
-
'Of course. You can enter decimal numbers (using a period) and it will also work with negative values if you need to analyze accounting balances in losses.',
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
question: 'Can I copy the results?',
|
|
29
|
-
answer:
|
|
30
|
-
'Yes, each case has a button in the result box that instantly copies the number to your device\'s clipboard so you can paste it in another app or document.',
|
|
31
|
-
},
|
|
32
|
-
];
|
|
33
|
-
|
|
34
|
-
const howToData = [
|
|
35
|
-
{
|
|
36
|
-
name: 'Identify your math problem',
|
|
37
|
-
text: 'Read the titles of the 4 cases and choose the one that matches what you want to know (Ex. What is 20% of 50? → Case 1).',
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
name: 'Enter the numbers',
|
|
41
|
-
text: 'Fill in the X and Y fields. Do not worry about the order, the text of each case guides you visually.',
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
name: 'Copy the instant result',
|
|
45
|
-
text: 'The number will appear in real time below as you type. Click the copy icon if you want to take it elsewhere.',
|
|
46
|
-
},
|
|
47
|
-
];
|
|
48
|
-
|
|
49
|
-
const faqSchema: WithContext<FAQPage> = {
|
|
50
|
-
'@context': 'https://schema.org',
|
|
51
|
-
'@type': 'FAQPage',
|
|
52
|
-
mainEntity: faqData.map((item) => ({
|
|
53
|
-
'@type': 'Question',
|
|
54
|
-
name: item.question,
|
|
55
|
-
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
56
|
-
})),
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
const howToSchema: WithContext<HowTo> = {
|
|
60
|
-
'@context': 'https://schema.org',
|
|
61
|
-
'@type': 'HowTo',
|
|
62
|
-
name: title,
|
|
63
|
-
description,
|
|
64
|
-
step: howToData.map((step, i) => ({
|
|
65
|
-
'@type': 'HowToStep',
|
|
66
|
-
position: i + 1,
|
|
67
|
-
name: step.name,
|
|
68
|
-
text: step.text,
|
|
69
|
-
})),
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const appSchema: WithContext<SoftwareApplication> = {
|
|
73
|
-
'@context': 'https://schema.org',
|
|
74
|
-
'@type': 'SoftwareApplication',
|
|
75
|
-
name: title,
|
|
76
|
-
description,
|
|
77
|
-
applicationCategory: 'FinanceApplication',
|
|
78
|
-
operatingSystem: 'All',
|
|
79
|
-
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
80
|
-
inLanguage: 'en',
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export const content: ToolLocaleContent<PercentageCalculatorUI> = {
|
|
84
|
-
slug,
|
|
85
|
-
title,
|
|
86
|
-
description,
|
|
87
|
-
faq: faqData,
|
|
88
|
-
bibliography,
|
|
89
|
-
|
|
90
|
-
howTo: howToData,
|
|
91
|
-
schemas: [faqSchema, howToSchema, appSchema],
|
|
92
|
-
seo: [
|
|
93
|
-
{
|
|
94
|
-
type: 'title',
|
|
95
|
-
text: '4-in-1 Percentage Calculator: Master Quick Calculations',
|
|
96
|
-
level: 2,
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
type: 'title',
|
|
100
|
-
text: 'Why You Need a Multi-Purpose Percentage Calculator',
|
|
101
|
-
level: 3,
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
type: 'paragraph',
|
|
105
|
-
html: 'Calculating percentages is one of the most common mathematical operations in our daily lives. From figuring out discounts during a sale, to calculating the right tip at a restaurant, determining profit margins in business, or understanding loan interest. Despite being everyday operations, it\'s not always easy to do them mentally or remember the exact formula.',
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
type: 'paragraph',
|
|
109
|
-
html: 'Our 4-in-1 percentage calculator bundles the most common scenarios you\'ll face. No more searching Google for "how to calculate 20 percent" or "percentage formula." You have all four essential operations in one place, interactive and with instant results.',
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
type: 'title',
|
|
113
|
-
text: 'Exploring the 4 Most Common Use Cases',
|
|
114
|
-
level: 3,
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
type: 'paragraph',
|
|
118
|
-
html: 'To make your life easier, we\'ve separated the tool into four clear visual blocks that solve real-world problems you encounter daily:',
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
type: 'card',
|
|
122
|
-
icon: 'mdi:percent',
|
|
123
|
-
title: '1. What is X% of Y?',
|
|
124
|
-
html: '<p><strong>The classic case.</strong> Perfect for calculating discounts or tips. If you want to know what 15% of $120 is, this is your tool. The underlying formula simply divides the percentage by 100 and multiplies it by the total value.</p>',
|
|
125
|
-
},
|
|
126
|
-
{
|
|
127
|
-
type: 'card',
|
|
128
|
-
icon: 'mdi:division',
|
|
129
|
-
title: '2. What Percentage is X of Y?',
|
|
130
|
-
html: '<p><strong>Ideal for proportions.</strong> If you scored 45 points on a 60-point exam, what\'s your percentage score? This function divides the part by the total and multiplies by 100, giving you the exact relative weight.</p>',
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
type: 'card',
|
|
134
|
-
icon: 'mdi:chart-line-variant',
|
|
135
|
-
title: '3. Percentage Increase or Decrease',
|
|
136
|
-
html: '<p><strong>Perfect for finance and analytics.</strong> How much has your rent increased since last year? If you paid $800 before and $840 now, this function tells you it\'s a 5% increase. It measures growth or decline between two numbers.</p>',
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
type: 'card',
|
|
140
|
-
icon: 'mdi:calculator',
|
|
141
|
-
title: '4. Add or Subtract Percentage from a Value',
|
|
142
|
-
html: '<p><strong>Super useful for sales tax.</strong> If you have a base price (e.g., $100) and need to add 8.5% sales tax, this calculator gives you the $108.50 final total instantly without intermediate steps. Similarly, it works for applying discounts directly (e.g., subtract 20%).</p>',
|
|
143
|
-
},
|
|
144
|
-
{
|
|
145
|
-
type: 'title',
|
|
146
|
-
text: 'Common Myths About Percentage Calculations',
|
|
147
|
-
level: 3,
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
type: 'paragraph',
|
|
151
|
-
html: 'We often get stuck when we see large percentages or decimals, but there are some math "tricks" that can make your life easier. The most famous is <strong>percentage reversibility</strong>.',
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
type: 'tip',
|
|
155
|
-
title: 'The Reversibility Trick',
|
|
156
|
-
html: '<p>Did you know that X% of Y equals Y% of X exactly? For example, if you\'re asked to calculate 18% of 50 in your head, it sounds complicated. But flip it around-50% of 18 is easy: it\'s 9! This works for absolutely any numbers and is an amazing lifesaver in daily calculations.</p>',
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
type: 'title',
|
|
160
|
-
text: 'Why We Fail at Calculating Growth',
|
|
161
|
-
level: 3,
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
type: 'paragraph',
|
|
165
|
-
html: 'One of the most common mistakes happens in Case 3: percentage increase or decrease. Imagine a stock costs $100, drops 50%, and then rises 50% the next day. Your intuition says it\'s back to $100, but it\'s not.',
|
|
166
|
-
},
|
|
167
|
-
{
|
|
168
|
-
type: 'paragraph',
|
|
169
|
-
html: 'If it drops 50% from $100, the new value is $50. If it then rises 50% from that $50, the gain is half of $50 (which is $25). So the final price is $75. This classic example shows why percentage increases and decreases aren\'t symmetrical, and why dynamic calculators like this prevent serious financial mistakes.',
|
|
170
|
-
},
|
|
171
|
-
{
|
|
172
|
-
type: 'title',
|
|
173
|
-
text: 'Professional and Academic Use',
|
|
174
|
-
level: 3,
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
type: 'paragraph',
|
|
178
|
-
html: 'Our interface is distraction-free and designed to <strong>work fast</strong>. Pin it as a browser tab, quickly tab between fields, and use the copy button next to results to transfer exact figures to Excel or Google Sheets without typo risk.',
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
type: 'list',
|
|
182
|
-
items: [
|
|
183
|
-
'E-commerce and retail stores: Quick calculation of retail prices by applying profit margins and sales tax.',
|
|
184
|
-
'Human resources: Determining wage gaps, tax withholdings, and salary increases tied to inflation.',
|
|
185
|
-
'Higher education: Teachers grading curves or STEM students analyzing experimental deviation.',
|
|
186
|
-
'Digital marketing: Measuring CTR (Click Through Rate), ROAS (Return on Ad Spend), or eCommerce conversion rates.',
|
|
187
|
-
],
|
|
188
|
-
},
|
|
189
|
-
],
|
|
190
|
-
ui: {
|
|
191
|
-
labelTitle: 'Percentage Calculator',
|
|
192
|
-
labelCase1Title: 'Case 1',
|
|
193
|
-
labelCase1Question: 'What is X% of Y?',
|
|
194
|
-
labelCase1Placeholder1: 'X',
|
|
195
|
-
labelCase1Placeholder2: 'Y',
|
|
196
|
-
labelCase1Formula: 'Formula: (X / 100) × Y',
|
|
197
|
-
labelCase2Title: 'Case 2',
|
|
198
|
-
labelCase2Question: 'What percentage is X of Y?',
|
|
199
|
-
labelCase2Placeholder1: 'X',
|
|
200
|
-
labelCase2Placeholder2: 'Y',
|
|
201
|
-
labelCase2Formula: 'Formula: (X / Y) × 100',
|
|
202
|
-
labelCase3Title: 'Case 3',
|
|
203
|
-
labelCase3Question: 'Percentage difference between two values',
|
|
204
|
-
labelCase3Placeholder1: 'Value 1',
|
|
205
|
-
labelCase3Placeholder2: 'Value 2',
|
|
206
|
-
labelCase3Formula: 'Formula: ((Value 2 - Value 1) / |Value 1|) × 100',
|
|
207
|
-
labelCase4Title: 'Case 4',
|
|
208
|
-
labelCase4Question: 'Add or subtract a percentage to a value',
|
|
209
|
-
labelCase4Placeholder1: 'Value',
|
|
210
|
-
labelCase4Placeholder2: '%',
|
|
211
|
-
labelCase4Formula: 'Formula: Value ± (Value × (% / 100))',
|
|
212
|
-
labelCase4AddLabel: 'Add (Value + %)',
|
|
213
|
-
labelCase4SubtractLabel: 'Subtract (Value - %)',
|
|
214
|
-
labelResult: 'Result',
|
|
215
|
-
labelDifference: 'Difference',
|
|
216
|
-
labelCopyTooltip: 'Copy result',
|
|
217
|
-
labelFormula: 'Formula',
|
|
218
|
-
percentSymbol: '%',
|
|
219
|
-
},
|
|
220
|
-
};
|
|
1
|
+
import { bibliography } from '../bibliography'
|
|
2
|
+
import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
|
|
3
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
4
|
+
import type { PercentageCalculatorUI } from '../ui';
|
|
5
|
+
|
|
6
|
+
const slug = 'percentage-calculator';
|
|
7
|
+
const title = 'Percentage Calculator: 4 in 1 for Discounts, Tax and Markups';
|
|
8
|
+
const description =
|
|
9
|
+
'Calculate percentages online for free. 4 tools in 1 to find X% of Y, percentage difference, add or subtract VAT, discounts and tip calculations automatically.';
|
|
10
|
+
|
|
11
|
+
const faqData = [
|
|
12
|
+
{
|
|
13
|
+
question: 'How does the calculator work?',
|
|
14
|
+
answer:
|
|
15
|
+
'Simply type the values in the fields of the use case that matches your problem and our calculator processes the formula without needing to press a calculate button.',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
question: 'Is it valid for calculating VAT or taxes?',
|
|
19
|
+
answer:
|
|
20
|
+
'Yes, Case 4 (Add or subtract percentage) is designed precisely for cases like applying a 21% VAT to a base price or calculating negative income tax.',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
question: 'Does it handle decimals and negative numbers?',
|
|
24
|
+
answer:
|
|
25
|
+
'Of course. You can enter decimal numbers (using a period) and it will also work with negative values if you need to analyze accounting balances in losses.',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
question: 'Can I copy the results?',
|
|
29
|
+
answer:
|
|
30
|
+
'Yes, each case has a button in the result box that instantly copies the number to your device\'s clipboard so you can paste it in another app or document.',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
const howToData = [
|
|
35
|
+
{
|
|
36
|
+
name: 'Identify your math problem',
|
|
37
|
+
text: 'Read the titles of the 4 cases and choose the one that matches what you want to know (Ex. What is 20% of 50? → Case 1).',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'Enter the numbers',
|
|
41
|
+
text: 'Fill in the X and Y fields. Do not worry about the order, the text of each case guides you visually.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: 'Copy the instant result',
|
|
45
|
+
text: 'The number will appear in real time below as you type. Click the copy icon if you want to take it elsewhere.',
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
|
|
49
|
+
const faqSchema: WithContext<FAQPage> = {
|
|
50
|
+
'@context': 'https://schema.org',
|
|
51
|
+
'@type': 'FAQPage',
|
|
52
|
+
mainEntity: faqData.map((item) => ({
|
|
53
|
+
'@type': 'Question',
|
|
54
|
+
name: item.question,
|
|
55
|
+
acceptedAnswer: { '@type': 'Answer', text: item.answer },
|
|
56
|
+
})),
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const howToSchema: WithContext<HowTo> = {
|
|
60
|
+
'@context': 'https://schema.org',
|
|
61
|
+
'@type': 'HowTo',
|
|
62
|
+
name: title,
|
|
63
|
+
description,
|
|
64
|
+
step: howToData.map((step, i) => ({
|
|
65
|
+
'@type': 'HowToStep',
|
|
66
|
+
position: i + 1,
|
|
67
|
+
name: step.name,
|
|
68
|
+
text: step.text,
|
|
69
|
+
})),
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const appSchema: WithContext<SoftwareApplication> = {
|
|
73
|
+
'@context': 'https://schema.org',
|
|
74
|
+
'@type': 'SoftwareApplication',
|
|
75
|
+
name: title,
|
|
76
|
+
description,
|
|
77
|
+
applicationCategory: 'FinanceApplication',
|
|
78
|
+
operatingSystem: 'All',
|
|
79
|
+
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
|
|
80
|
+
inLanguage: 'en',
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export const content: ToolLocaleContent<PercentageCalculatorUI> = {
|
|
84
|
+
slug,
|
|
85
|
+
title,
|
|
86
|
+
description,
|
|
87
|
+
faq: faqData,
|
|
88
|
+
bibliography,
|
|
89
|
+
|
|
90
|
+
howTo: howToData,
|
|
91
|
+
schemas: [faqSchema, howToSchema, appSchema],
|
|
92
|
+
seo: [
|
|
93
|
+
{
|
|
94
|
+
type: 'title',
|
|
95
|
+
text: '4-in-1 Percentage Calculator: Master Quick Calculations',
|
|
96
|
+
level: 2,
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
type: 'title',
|
|
100
|
+
text: 'Why You Need a Multi-Purpose Percentage Calculator',
|
|
101
|
+
level: 3,
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
type: 'paragraph',
|
|
105
|
+
html: 'Calculating percentages is one of the most common mathematical operations in our daily lives. From figuring out discounts during a sale, to calculating the right tip at a restaurant, determining profit margins in business, or understanding loan interest. Despite being everyday operations, it\'s not always easy to do them mentally or remember the exact formula.',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
type: 'paragraph',
|
|
109
|
+
html: 'Our 4-in-1 percentage calculator bundles the most common scenarios you\'ll face. No more searching Google for "how to calculate 20 percent" or "percentage formula." You have all four essential operations in one place, interactive and with instant results.',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
type: 'title',
|
|
113
|
+
text: 'Exploring the 4 Most Common Use Cases',
|
|
114
|
+
level: 3,
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
type: 'paragraph',
|
|
118
|
+
html: 'To make your life easier, we\'ve separated the tool into four clear visual blocks that solve real-world problems you encounter daily:',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
type: 'card',
|
|
122
|
+
icon: 'mdi:percent',
|
|
123
|
+
title: '1. What is X% of Y?',
|
|
124
|
+
html: '<p><strong>The classic case.</strong> Perfect for calculating discounts or tips. If you want to know what 15% of $120 is, this is your tool. The underlying formula simply divides the percentage by 100 and multiplies it by the total value.</p>',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'card',
|
|
128
|
+
icon: 'mdi:division',
|
|
129
|
+
title: '2. What Percentage is X of Y?',
|
|
130
|
+
html: '<p><strong>Ideal for proportions.</strong> If you scored 45 points on a 60-point exam, what\'s your percentage score? This function divides the part by the total and multiplies by 100, giving you the exact relative weight.</p>',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
type: 'card',
|
|
134
|
+
icon: 'mdi:chart-line-variant',
|
|
135
|
+
title: '3. Percentage Increase or Decrease',
|
|
136
|
+
html: '<p><strong>Perfect for finance and analytics.</strong> How much has your rent increased since last year? If you paid $800 before and $840 now, this function tells you it\'s a 5% increase. It measures growth or decline between two numbers.</p>',
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
type: 'card',
|
|
140
|
+
icon: 'mdi:calculator',
|
|
141
|
+
title: '4. Add or Subtract Percentage from a Value',
|
|
142
|
+
html: '<p><strong>Super useful for sales tax.</strong> If you have a base price (e.g., $100) and need to add 8.5% sales tax, this calculator gives you the $108.50 final total instantly without intermediate steps. Similarly, it works for applying discounts directly (e.g., subtract 20%).</p>',
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
type: 'title',
|
|
146
|
+
text: 'Common Myths About Percentage Calculations',
|
|
147
|
+
level: 3,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
type: 'paragraph',
|
|
151
|
+
html: 'We often get stuck when we see large percentages or decimals, but there are some math "tricks" that can make your life easier. The most famous is <strong>percentage reversibility</strong>.',
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
type: 'tip',
|
|
155
|
+
title: 'The Reversibility Trick',
|
|
156
|
+
html: '<p>Did you know that X% of Y equals Y% of X exactly? For example, if you\'re asked to calculate 18% of 50 in your head, it sounds complicated. But flip it around-50% of 18 is easy: it\'s 9! This works for absolutely any numbers and is an amazing lifesaver in daily calculations.</p>',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
type: 'title',
|
|
160
|
+
text: 'Why We Fail at Calculating Growth',
|
|
161
|
+
level: 3,
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
type: 'paragraph',
|
|
165
|
+
html: 'One of the most common mistakes happens in Case 3: percentage increase or decrease. Imagine a stock costs $100, drops 50%, and then rises 50% the next day. Your intuition says it\'s back to $100, but it\'s not.',
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
type: 'paragraph',
|
|
169
|
+
html: 'If it drops 50% from $100, the new value is $50. If it then rises 50% from that $50, the gain is half of $50 (which is $25). So the final price is $75. This classic example shows why percentage increases and decreases aren\'t symmetrical, and why dynamic calculators like this prevent serious financial mistakes.',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
type: 'title',
|
|
173
|
+
text: 'Professional and Academic Use',
|
|
174
|
+
level: 3,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
type: 'paragraph',
|
|
178
|
+
html: 'Our interface is distraction-free and designed to <strong>work fast</strong>. Pin it as a browser tab, quickly tab between fields, and use the copy button next to results to transfer exact figures to Excel or Google Sheets without typo risk.',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
type: 'list',
|
|
182
|
+
items: [
|
|
183
|
+
'E-commerce and retail stores: Quick calculation of retail prices by applying profit margins and sales tax.',
|
|
184
|
+
'Human resources: Determining wage gaps, tax withholdings, and salary increases tied to inflation.',
|
|
185
|
+
'Higher education: Teachers grading curves or STEM students analyzing experimental deviation.',
|
|
186
|
+
'Digital marketing: Measuring CTR (Click Through Rate), ROAS (Return on Ad Spend), or eCommerce conversion rates.',
|
|
187
|
+
],
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
ui: {
|
|
191
|
+
labelTitle: 'Percentage Calculator',
|
|
192
|
+
labelCase1Title: 'Case 1',
|
|
193
|
+
labelCase1Question: 'What is X% of Y?',
|
|
194
|
+
labelCase1Placeholder1: 'X',
|
|
195
|
+
labelCase1Placeholder2: 'Y',
|
|
196
|
+
labelCase1Formula: 'Formula: (X / 100) × Y',
|
|
197
|
+
labelCase2Title: 'Case 2',
|
|
198
|
+
labelCase2Question: 'What percentage is X of Y?',
|
|
199
|
+
labelCase2Placeholder1: 'X',
|
|
200
|
+
labelCase2Placeholder2: 'Y',
|
|
201
|
+
labelCase2Formula: 'Formula: (X / Y) × 100',
|
|
202
|
+
labelCase3Title: 'Case 3',
|
|
203
|
+
labelCase3Question: 'Percentage difference between two values',
|
|
204
|
+
labelCase3Placeholder1: 'Value 1',
|
|
205
|
+
labelCase3Placeholder2: 'Value 2',
|
|
206
|
+
labelCase3Formula: 'Formula: ((Value 2 - Value 1) / |Value 1|) × 100',
|
|
207
|
+
labelCase4Title: 'Case 4',
|
|
208
|
+
labelCase4Question: 'Add or subtract a percentage to a value',
|
|
209
|
+
labelCase4Placeholder1: 'Value',
|
|
210
|
+
labelCase4Placeholder2: '%',
|
|
211
|
+
labelCase4Formula: 'Formula: Value ± (Value × (% / 100))',
|
|
212
|
+
labelCase4AddLabel: 'Add (Value + %)',
|
|
213
|
+
labelCase4SubtractLabel: 'Subtract (Value - %)',
|
|
214
|
+
labelResult: 'Result',
|
|
215
|
+
labelDifference: 'Difference',
|
|
216
|
+
labelCopyTooltip: 'Copy result',
|
|
217
|
+
labelFormula: 'Formula',
|
|
218
|
+
percentSymbol: '%',
|
|
219
|
+
},
|
|
220
|
+
};
|