Setting Input field to 2 decimal points (Price)











up vote
0
down vote

favorite












I am currently trying to input prices into a .txt file.



So i want it when the user input:1.1



Instead of 1.1, I want it to become 1.10 instead. As it would look better for the table I am trying to make in the future. I would also like to round up or down if it goes more than 3 decimal places. (Thanks john1024 for the correction)










share|improve this question




















  • 1




    Oh... Alright i'll edit my question. Thanks!
    – pandora
    Jan 19 at 3:12






  • 1




    So... read x; printf '%.2fn' "$x" maybe? See help printf and man 3 printf
    – steeldriver
    Jan 19 at 3:22






  • 1




    To store the additional zero in variable x2: read x; printf -v x2 '%.02f' "$x"
    – John1024
    Jan 19 at 3:40






  • 2




    @John1024, that sounds like an answer to me.
    – ilkkachu
    Jan 19 at 9:48






  • 2




    Possible duplicate of AWK with one decimal place
    – αғsнιη
    Jan 20 at 8:44















up vote
0
down vote

favorite












I am currently trying to input prices into a .txt file.



So i want it when the user input:1.1



Instead of 1.1, I want it to become 1.10 instead. As it would look better for the table I am trying to make in the future. I would also like to round up or down if it goes more than 3 decimal places. (Thanks john1024 for the correction)










share|improve this question




















  • 1




    Oh... Alright i'll edit my question. Thanks!
    – pandora
    Jan 19 at 3:12






  • 1




    So... read x; printf '%.2fn' "$x" maybe? See help printf and man 3 printf
    – steeldriver
    Jan 19 at 3:22






  • 1




    To store the additional zero in variable x2: read x; printf -v x2 '%.02f' "$x"
    – John1024
    Jan 19 at 3:40






  • 2




    @John1024, that sounds like an answer to me.
    – ilkkachu
    Jan 19 at 9:48






  • 2




    Possible duplicate of AWK with one decimal place
    – αғsнιη
    Jan 20 at 8:44













up vote
0
down vote

favorite









up vote
0
down vote

favorite











I am currently trying to input prices into a .txt file.



So i want it when the user input:1.1



Instead of 1.1, I want it to become 1.10 instead. As it would look better for the table I am trying to make in the future. I would also like to round up or down if it goes more than 3 decimal places. (Thanks john1024 for the correction)










share|improve this question















I am currently trying to input prices into a .txt file.



So i want it when the user input:1.1



Instead of 1.1, I want it to become 1.10 instead. As it would look better for the table I am trying to make in the future. I would also like to round up or down if it goes more than 3 decimal places. (Thanks john1024 for the correction)







bash floating-point






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited yesterday









Rui F Ribeiro

38.6k1479128




38.6k1479128










asked Jan 19 at 2:56









pandora

35




35








  • 1




    Oh... Alright i'll edit my question. Thanks!
    – pandora
    Jan 19 at 3:12






  • 1




    So... read x; printf '%.2fn' "$x" maybe? See help printf and man 3 printf
    – steeldriver
    Jan 19 at 3:22






  • 1




    To store the additional zero in variable x2: read x; printf -v x2 '%.02f' "$x"
    – John1024
    Jan 19 at 3:40






  • 2




    @John1024, that sounds like an answer to me.
    – ilkkachu
    Jan 19 at 9:48






  • 2




    Possible duplicate of AWK with one decimal place
    – αғsнιη
    Jan 20 at 8:44














  • 1




    Oh... Alright i'll edit my question. Thanks!
    – pandora
    Jan 19 at 3:12






  • 1




    So... read x; printf '%.2fn' "$x" maybe? See help printf and man 3 printf
    – steeldriver
    Jan 19 at 3:22






  • 1




    To store the additional zero in variable x2: read x; printf -v x2 '%.02f' "$x"
    – John1024
    Jan 19 at 3:40






  • 2




    @John1024, that sounds like an answer to me.
    – ilkkachu
    Jan 19 at 9:48






  • 2




    Possible duplicate of AWK with one decimal place
    – αғsнιη
    Jan 20 at 8:44








1




1




Oh... Alright i'll edit my question. Thanks!
– pandora
Jan 19 at 3:12




Oh... Alright i'll edit my question. Thanks!
– pandora
Jan 19 at 3:12




1




1




So... read x; printf '%.2fn' "$x" maybe? See help printf and man 3 printf
– steeldriver
Jan 19 at 3:22




So... read x; printf '%.2fn' "$x" maybe? See help printf and man 3 printf
– steeldriver
Jan 19 at 3:22




1




1




To store the additional zero in variable x2: read x; printf -v x2 '%.02f' "$x"
– John1024
Jan 19 at 3:40




To store the additional zero in variable x2: read x; printf -v x2 '%.02f' "$x"
– John1024
Jan 19 at 3:40




2




2




@John1024, that sounds like an answer to me.
– ilkkachu
Jan 19 at 9:48




@John1024, that sounds like an answer to me.
– ilkkachu
Jan 19 at 9:48




2




2




Possible duplicate of AWK with one decimal place
– αғsнιη
Jan 20 at 8:44




Possible duplicate of AWK with one decimal place
– αғsнιη
Jan 20 at 8:44










1 Answer
1






active

oldest

votes

















up vote
0
down vote













To read in a price and coerce it to have 2 decimal places, try:



read -p "Enter the price: " var
printf -v var '%.2f' "$var"


The %.2f format tells printf to use two-decimal digits.



Examples:



$ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
Enter the price: 1.2
var=1.20
$ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
Enter the price: 1.123
var=1.12


Note: Bash can format numbers with decimal points but it cannot do addition, subtraction, or other arithmetic on such floating point numbers. For that, you will need other tools like awk or bc or zsh.






share|improve this answer





















    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "106"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f418142%2fsetting-input-field-to-2-decimal-points-price%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    0
    down vote













    To read in a price and coerce it to have 2 decimal places, try:



    read -p "Enter the price: " var
    printf -v var '%.2f' "$var"


    The %.2f format tells printf to use two-decimal digits.



    Examples:



    $ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
    Enter the price: 1.2
    var=1.20
    $ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
    Enter the price: 1.123
    var=1.12


    Note: Bash can format numbers with decimal points but it cannot do addition, subtraction, or other arithmetic on such floating point numbers. For that, you will need other tools like awk or bc or zsh.






    share|improve this answer

























      up vote
      0
      down vote













      To read in a price and coerce it to have 2 decimal places, try:



      read -p "Enter the price: " var
      printf -v var '%.2f' "$var"


      The %.2f format tells printf to use two-decimal digits.



      Examples:



      $ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
      Enter the price: 1.2
      var=1.20
      $ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
      Enter the price: 1.123
      var=1.12


      Note: Bash can format numbers with decimal points but it cannot do addition, subtraction, or other arithmetic on such floating point numbers. For that, you will need other tools like awk or bc or zsh.






      share|improve this answer























        up vote
        0
        down vote










        up vote
        0
        down vote









        To read in a price and coerce it to have 2 decimal places, try:



        read -p "Enter the price: " var
        printf -v var '%.2f' "$var"


        The %.2f format tells printf to use two-decimal digits.



        Examples:



        $ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
        Enter the price: 1.2
        var=1.20
        $ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
        Enter the price: 1.123
        var=1.12


        Note: Bash can format numbers with decimal points but it cannot do addition, subtraction, or other arithmetic on such floating point numbers. For that, you will need other tools like awk or bc or zsh.






        share|improve this answer












        To read in a price and coerce it to have 2 decimal places, try:



        read -p "Enter the price: " var
        printf -v var '%.2f' "$var"


        The %.2f format tells printf to use two-decimal digits.



        Examples:



        $ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
        Enter the price: 1.2
        var=1.20
        $ read -p "Enter the price: " var; printf -v var '%.2f' "$var"; echo "var=$var"
        Enter the price: 1.123
        var=1.12


        Note: Bash can format numbers with decimal points but it cannot do addition, subtraction, or other arithmetic on such floating point numbers. For that, you will need other tools like awk or bc or zsh.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 20 at 8:22









        John1024

        45.7k4103118




        45.7k4103118






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f418142%2fsetting-input-field-to-2-decimal-points-price%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Accessing regular linux commands in Huawei's Dopra Linux

            Can't connect RFCOMM socket: Host is down

            Kernel panic - not syncing: Fatal Exception in Interrupt