Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Floating point comparison
- # (C) Oliver Stieber oliverthered [email protected]
- # Public Domain
- f1=0.01
- f2=0.2
- float_cp () {
- IFS="."
- read -ra float1 <<< "$1"
- read -ra float2 <<< "$2"
- while [[ ${#float2[1]} -lt ${#float1[1]} ]]
- do
- float2[1]+="0"
- done
- while [[ ${#float2[1]} -gt ${#float1[1]} ]]
- do
- float1[1]+="0"
- done
- if [[ ${float1[0]} -gt ${float2[0]} || (${float1[0]} -eq ${float2[0]} && ${float1[1]} -gt ${float2[1]}) ]]; then
- echo 1
- elif [[ ${float1[0]} -eq ${float2[0]} && ${float1[1]} -eq ${float2[1]} ]]; then
- echo 0
- else
- echo -1
- fi
- }
- if [[ "$(float_cp $f1 $f2)" -eq 0 ]]; then
- echo "yay eq"
- elif [[ "$(float_cp $f1 $f2)" -gt 0 ]]; then
- echo "may gt"
- elif [[ "$(float_cp $f1 $f2)" -lt 0 ]]; then
- echo "nay lt"
- fi
- tests ()
- {
- echo "eq"
- if [[ "$(float_cp 0.1 0.1)" -eq 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 10.11 10.11)" -eq 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp .11 0.11)" -eq 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.11 .11)" -eq 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.110 .11)" -eq 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.11 .110)" -eq 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- echo "gt"
- if [[ "$(float_cp 0.2 0.1)" -gt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 2.1 0.1)" -gt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 20.11 10.11)" -gt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 10.21 10.11)" -gt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp .12 0.11)" -gt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.12 .11)" -gt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.120 .11)" -gt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.12 .110)" -gt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- echo "lt"
- if [[ "$(float_cp 0.1 0.2)" -lt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.1 21)" -lt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 10.11 20.11)" -lt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 10.11 10.21)" -lt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp .11 0.12)" -lt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.11 .12)" -lt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.11 .120)" -lt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- if [[ "$(float_cp 0.110 .12)" -lt 0 ]]; then
- echo "pass"
- else
- echo "fail"
- fi
- }
- echo "$(tests)"
Advertisement
Add Comment
Please, Sign In to add comment